2016-08-22 15 views
1

Was ist die Bedeutung von T.mean in this example? Ich denke, T.mean hätte Sinn ergeben, wenn die Implementierung vektorisiert wurde. Hier sind die Eingänge x und y bis train(x, y) Skalare, und cost findet nur den quadratischen Fehler einer einzelnen Eingabe und iteriert über die Daten.Lineare Regression in theano

cost = T.mean(T.sqr(y - Y)) 
gradient = T.grad(cost=cost, wrt=w) 
updates = [[w, w - gradient * 0.01]] 

train = theano.function(inputs=[X, Y], outputs=cost, updates=updates, allow_input_downcast=True) 

for i in range(100): 
    for x, y in zip(trX, trY): 
     train(x, y) 

print w.get_value() 

Entfernen T.mean hatte keine Auswirkungen auf das Ausgabemuster.

Antwort

1

Sie haben Recht, T.mean hat hier keine Bedeutung. Die Kostenfunktion arbeitet mit einem einzigen Trainingssample auf einmal, so dass der "mittlere quadratische Fehler" wirklich nur der quadratische Fehler der Probe ist.

Dieses Beispiel implementiert die lineare Regression über stochastic gradient descent, einen Algorithmus für die Online-Optimierung. SGD iteriert nacheinander die Samples, wie es in diesem Beispiel der Fall ist. In komplexeren Szenarios ist das Dataset jedoch oft processed in mini-batches, was bessere Leistungs- und Konvergenzeigenschaften ergibt.

Ich denke, dass T.mean im Beispiel als ein Artefakt der Mini-Batch-Gradienten-Abstieg gelassen wurde, oder um es deutlicher zu machen, dass die Kostenfunktion MSE ist.