使用渐变带时,您可以在使用以下各项后计算渐变:
with tf.GradientTape() as tape:
out = model(x, training=True)
out = tf.reshape(out, (num_img, 1, 10)) # Resizing
loss = tf.keras.losses.categorical_crossentropy(y, out)
gradient = tape.gradient(loss, model.trainable_variables)
但是,对于cifar10输入,这将返回输入图像的梯度。 是否有一种方法可以进入中间步骤的梯度,使他们通过“一些”训练
编辑:多亏了你的评论,我对你的问题有了更好的理解。 下面的代码远远不够理想,没有考虑批处理培训等,但它可能会为您提供一个良好的起点。 我编写了一个定制的培训步骤,它基本上替代了
model.fit
方法。也许有更好的方法可以做到这一点,但它应该可以让您快速比较渐变让我们假设一个非常简单的模型:
你需要计算所有层相对于输入的梯度。 您可以使用以下选项:
如果要计算自定义损失,我建议Customize what happens in Model.fit
相关问题 更多 >
编程相关推荐