Ich habe eine Flask-Webanwendung auf Azure mit einem Dreamspark-Abonnement erstellt. Es verwendet Bibliotheken wie Numpy, Scipy und Theano.Interner Serverfehler bei Azure Flask Web App
Wenn ich die App mithilfe einer einfachen Theano-Berechnungen bereitstellen, funktioniert es perfekt. Wenn ich jedoch den Code in eine komplexere Theano-Berechnung umwandele, erhalte ich einen internen Serverfehler.
Hier ist ein Beispielcode. Als ich simpleFunction (so etwas wie eine Theano Funktion für eine Summe) nenne es funktioniert, aber wenn complexFunction (so etwas wie eine Bildklassifikation Berechnung) Aufruf erstellt dann einen Fehler Internal Server:
from flask import Flask
app = Flask(__name__)
wsgi_app = app.wsgi_app
from fileContainingTheanoCode import simpleFunction, complexFunction
@app.route('/')
def hello():
result = simpleFunction()
thisStr = str(result)
return """<html>
<head>
<title>Test website</title>
</head>
<body>
<h1>"""+thisStr+"""</h1>
</body>
</html>"""
if __name__ == '__main__':
HOST = os.environ.get('SERVER_HOST', 'localhost')
try:
PORT = int(os.environ.get('SERVER_PORT', '5555'))
except ValueError:
PORT = 5555
app.run(HOST, PORT)
Aus Gründen der Übersichtlichkeit ist hier der Code für die Datei theanoCode.py (es ist ein Faltungs Neural Network Classifier wird das Lademodul verwendet mnist-Datensatz von Dateien zu lesen):
# Import Libraries----------------------------------------------------------
import os
import sys
import pickle
import theano
import numpy as np
from theano import tensor as T
from theano.tensor.nnet.conv import conv2d
from theano.tensor.signal.downsample import max_pool_2d
from theano.sandbox.rng_mrg import MRG_RandomStreams as RandomStreams
srng = RandomStreams()
import load
testSize = 10
trainSize = 2
#---------------------------------------------------------------------------
# Constants-----------------------------------------------------------------
weightsFile = 'mnist.weights'
#---------------------------------------------------------------------------
# Model---------------------------------------------------------------------
# Stuff variable into numpy array with theano float datatype
def floatX(X):
return np.asarray(X, dtype=theano.config.floatX)
# Initialize weights randomly
def init_weights(shape):
return theano.shared(np.asarray(np.random.randn(*shape) * 0.01, dtype=theano.config.floatX),borrow=True)
# ReLU - rectify linear function with Theano
def rectify(X):
return T.maximum(X, 0.)
# Softmax operation
def softmax(X):
e_x = T.exp(X - X.max(axis=1).dimshuffle(0, 'x'))
return e_x/e_x.sum(axis=1).dimshuffle(0, 'x')
# Implements random chance of ignoring a neuron output during training
def dropout(X, p=0.):
if p > 0:
retain_prob = 1 - p
X *= srng.binomial(X.shape, p=retain_prob, dtype=theano.config.floatX)
X /= retain_prob
return X
# Gradient Descent with regularization - parameter reduction
def RMSprop(cost, params, lr=0.001, rho=0.9, epsilon=1e-6):
grads = T.grad(cost=cost, wrt=params)
updates = []
for p, g in zip(params, grads):
acc = theano.shared(p.get_value() * 0.)
acc_new = rho * acc + (1 - rho) * g ** 2
gradient_scaling = T.sqrt(acc_new + epsilon)
g = g/gradient_scaling
updates.append((acc, acc_new))
updates.append((p, p - lr * g))
return updates
# Constructs the model
def model(X, w1, w2, w3, w4, p_drop_conv, p_drop_hidden):
l1a = rectify(conv2d(X, w1, border_mode='full'))
l1 = max_pool_2d(l1a, (2, 2),ignore_border=False)
l1 = dropout(l1, p_drop_conv)
l2a = rectify(conv2d(l1, w2))
l2 = max_pool_2d(l2a, (2, 2),ignore_border=False)
l2 = dropout(l2, p_drop_conv)
l3a = rectify(conv2d(l2, w3))
l3b = max_pool_2d(l3a, (2, 2),ignore_border=False)
l3 = T.flatten(l3b, outdim=2)
l3 = dropout(l3, p_drop_conv)
# Fully connected Layer
l4 = rectify(T.dot(l3, w4))
l4 = dropout(l4, p_drop_hidden)
# Classify the Output
pyx = softmax(T.dot(l4, w_o))
return l1, l2, l3, l4, pyx
# Load the data (tr = training, te = test)
trX, teX, trY, teY = load.mnist(ntrain=trainSize, ntest=testSize, onehot=True)
# Reshape training set to be 4-dimensional
# negative value is to get ordering right (rather than mirror image)
# Second parameter is color channels
trX = trX.reshape(-1, 1, 28, 28)
teX = teX.reshape(-1, 1, 28, 28)
# Input variables
X = T.dtensor4()
Y = T.fmatrix()
# WEIGHTS
if os.path.isfile(weightsFile):
# Go get saved weights from file
[w1, w2, w3, w4, w_o] = pickle.load(open(weightsFile,'rb'))
else:
# Initialize all layer weights
# (no. Inputs, no. Outputs, filter height, filter width)
# ver isto outra vez, minuto 48
w1 = init_weights((32, 1, 3, 3)) # 1 = num canais de cada imagem (cor)
w2 = init_weights((64, 32, 3, 3))
w3 = init_weights((128, 64, 3, 3))
w4 = init_weights((128 * 3 * 3, 625))
w_o = init_weights((625, 10)) # from fully connected layer to classifier
# This sets up the model graph and some vars for noise, which are the internal neurons
noise_l1, noise_l2, noise_l3, noise_l4, noise_py_x = model(X, w1, w2, w3, w4, 0.2, 0.5)
# No dropping neurons...so this will be used for prediction
l1, l2, l3, l4, py_x = model(X, w1, w2, w3, w4, 0., 0.)
# This makes predictions
y_x = T.argmax(py_x, axis=1)
# Compile prediction function - here named complexFunction
complexFunction = theano.function(inputs=[X], outputs=y_x, allow_input_downcast=True)
Hier ist die detaillierte Fehlermeldung:
Event: MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName FastCgiModule
Notification EXECUTE_REQUEST_HANDLER
HttpStatus 500
HttpReason INTERNAL SERVER ERROR
HttpSubStatus 0
ErrorCode The operation completed successfully.
(0x0)
Und hier ist das Ereignisprotokoll:
</Data></EventData></Event><Event><System><Provider Name="ASP.NET 4.0.30319.0"/><EventID>1325</EventID><Level>3</Level><Task>0</Task><Keywords>Keywords</Keywords><TimeCreated SystemTime="2016-06-05T19:34:20Z"/><EventRecordID>1604538437</EventRecordID><Channel>Application</Channel><Computer>RD000D3A218E0C</Computer><Security/></System><EventData><Data>An unhandled exception occurred and the process was terminated.
Application ID: /LM/W3SVC/1568611192/ROOT
Process ID: 647864
Exception: System.Configuration.ConfigurationErrorsException
Message: Couldn't find type for class Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
StackTrace: at System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type baseType, String initializeData)
at System.Diagnostics.TypedElement.BaseGetRuntimeObject()
at System.Diagnostics.ListenerElement.GetRuntimeObject()
at System.Diagnostics.ListenerElementsCollection.GetRuntimeObject()
at System.Diagnostics.TraceInternal.get_Listeners()
at System.Diagnostics.TraceInternal.WriteLine(String message)
at System.Diagnostics.Debug.WriteLine(String message)
at Microsoft.Web.Compilation.Snapshots.SnapshotHelper.TakeSnapshotTimerCallback(Object stateInfo)
at System.Threading.TimerQueueTimer.CallCallbackInContext(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.TimerQueue.FireNextTimers()
at System.Threading.TimerQueue.AppDomainTimerCallback()</Data></EventData></Event><Event><System><Provider Name=".NET Runtime"/><EventID>1026</EventID><Level>0</Level><Task>0</Task><Keywords>Keywords</Keywords><TimeCreated SystemTime="2016-06-05T19:34:20Z"/><EventRecordID>1604538453</EventRecordID><Channel>Application</Channel><Computer>RD000D3A218E0C</Computer><Security/></System><EventData><Data>Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Configuration.ConfigurationErrorsException
at System.Diagnostics.TraceUtils.GetRuntimeObject(System.String, System.Type, System.String)
at System.Diagnostics.TypedElement.BaseGetRuntimeObject()
at System.Diagnostics.ListenerElement.GetRuntimeObject()
at System.Diagnostics.ListenerElementsCollection.GetRuntimeObject()
at System.Diagnostics.TraceInternal.get_Listeners()
at System.Diagnostics.TraceInternal.WriteLine(System.String)
at System.Diagnostics.Debug.WriteLine(System.String)
at Microsoft.Web.Compilation.Snapshots.SnapshotHelper.TakeSnapshotTimerCallback(System.Object)
at System.Threading.TimerQueueTimer.CallCallbackInContext(System.Object)
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.TimerQueue.FireNextTimers()
at System.Threading.TimerQueue.AppDomainTimerCallback()
</Data></EventData></Event></Events>
Und wo ist der * Code? * Fügen Sie eine [MCVE]. – jonrsharpe
Aktivieren Sie die Protokollierung und veröffentlichen Sie den tatsächlichen Fehler: http://StackOverflow.com/questions/32722143/flask-application-traceback-doesnt-show-up-in-server-log. – davidism