2016-08-22 3 views
1

Какое значение имеет T.mean в this example? Я думаю, что T.mean имел бы смысл, если бы реализация была векторизована. Здесь входы x и y - train(x, y) являются скалярами, а cost находит только квадратную ошибку одного входа и выполняет итерацию по данным.Линейная регрессия в anano

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() 

Удаление T.mean не оказывает никакого влияния на выходной шаблон.

ответ

1

Вы правы, T.mean не имеет значения здесь. Функция стоимости работает только на одном образце обучения, поэтому «средняя квадратичная ошибка» - это просто квадратная ошибка образца.

В этом примере реализована линейная регрессия с помощью stochastic gradient descent, алгоритма онлайн-оптимизации. SGD повторяется по образцам один за другим, как в данном примере. Однако в более сложных сценариях набор данных часто равен processed in mini-batches, что дает лучшие характеристики производительности и конвергенции.

Я думаю, что T.mean остался в этом примере как артефакт мини-пакетного спуска градиента, или чтобы сделать его более явным, что функция стоимости - это MSE.