我有一个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获得输出值,我可以使用这些值自己计算损失。感谢您的帮助。