Обратное распространение Keras против обратного распространения - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть CNN, построенный с использованием keras, и моя задача состоит в том, чтобы выполнить один шаг обучающих данных и получить градиенты, полученные при обратном распространении, и сравнить их с градиентами, которые я вычисляю.

Чтобы сделать это,Мне нужны весовые коэффициенты и функция потерь (разница между ожидаемым и достигнутым выходом, как бы вы это ни называли), но я не могу получить реальное значение функции loss_function, все, что я получаю, это тензор, который, я думаю, нет оценивается.

Tensor("loss/mul:0", shape=(), dtype=float32)
<class 'tensorflow.python.framework.ops.Tensor'>

Это значения и тип того, что я получаю, когда вызываю модель.total_loss.Как я могу получить значения оттуда, используя один набор обучающих данных?

РЕДАКТИРОВАТЬ 1: я построил модель, скомпилировал ее, и вот как я получаю градиенты керас для наборов в x_train.

gradients_tensor = K.gradients(model.output, model.trainable_weights)
sess = K.get_session()
evaluated_gradients = sess.run(gradients_tensor, feed_dict={model.input: x_train})

Как мне позвонить, чтобы получить функцию потерь для одного и того же входа?

РЕДАКТИРОВАТЬ 2:

# Build the model.
model = Sequential()
model.add(Conv2D(16, kernel_size=(3, 3), activation='relu', input_shape=input_shape))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(digits, activation='softmax'))

model.compile(loss = keras.losses.mean_squared_error,
              optimizer = keras.optimizers.Adadelta(),
              metrics=['accuracy'])

Это моймодель.По сути, это школьный проект, так что я, безусловно, плохо знаком с керасом и NN вообще.У меня действительно только теоретическое понимание.

РЕДАКТИРОВАТЬ 3: Или, если проще просто получить результаты запуска NN один раз на входе, это было бы точно так же для меня.

РЕДАКТИРОВАТЬ 4: Я только что закончил с использованием model.predict, чтобы получить выходные значения, и я могу использовать их для расчета потерь самостоятельно.Спасибо за помощь.

...