我的问题可能很容易解决,但我没有找到任何答案,也不知道如何实现,因为我也是Keras和Tensorflow的新手 .
问题:我使用了一个预训练的图像分割网(由Hengshuang Zhao等人2017年的PSPNet),有人用Tensorflow后端(PSPNet-Keras-tensorflow)将权重从Caffe转换为Keras .
我想计算相对于权重的分类交叉熵损失函数的梯度,而不是到目前为止复杂并且可由我解决 . 但问题是损失函数,因为我只想在预测的单个像素处丢失 .
到目前为止我失去整个图像的是:
weights = model.trainable_weights
gradients = model.optimizer.get_gradients(model.total_loss, weights)
# model is compiled with categorical crossentropy
input_tensor = [model.inputs[0], # input data
model.sample_weights[0], # how much to weight each sample by
model.targets[0], # labels
keras.backend.learning_phase() # train or test mode]
get_gradients = keras.backend.function(inputs=input_tensors, outputs=gradients)
如何调整此值以仅计算单个像素的损耗?
PS:之后我想迭代整个图像(~2百万像素)并为每个像素计算相对于权重的分类交叉熵损失的梯度 .
感谢您的任何帮助和建议 .