Keras反向传播与自制反向传播

时间:2019-02-02 08:07:19

标签: python tensorflow keras neural-network backpropagation

我有一个CNN建有keras和我的任务是要运行的训练数据的一个步骤,并且获得通过反向传播所取得的梯度和比较那些梯度,我计算了。

为了做到这一点,我需要的权重和损失函数(预期和实现产出之间的差异,无论你怎么称呼它),但我似乎无法得到loss_function的实际价值,我得到的是张量,我估计没有评估。

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

这些都是值和我所得到的,当我打电话model.total_loss类型。如何实际使用一组训练数据的获取从那里值?

编辑1:我已经建立了模型,编译它,这是我得到keras梯度为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'])

这是我的模特。这实质上是一个学校的项目,所以我很清楚新keras和神经网络的一般。我真的只有一个理论上的理解。

编辑3:或者,如果它更容易刚上输入运行NN一次的输出,这将是完全一样的我。

编辑4:我最终只是使用model.predict获得输出值,我可以使用这些值自己计算损失。感谢您的帮助。

0 个答案:

没有答案