我有问题的网络将10x10x1
图像作为输入,并返回4x2x3
图像作为输出。像这样:
输入到网络
输入图像有两个2x2x1
大小的色块。
网络输出:
我有问题的网络需要提取大小为4x2x3
的输出图像。像这样:
以上补丁应直接从另一张我称为原始图像的图像中提取。
原始图片
这是原始图像,我需要从中提取原始补丁。此原始图像包含大小为4x2x3
我从10x10x1
输入图像中提取最后一层中每个补丁的左上位置,该位置的补丁与输入图像的位置大致相同。但是,这些值是预测值,因此可能并不完全准确。找到补丁的左上角位置后,便从10x10x3
原始图像中提取了补丁并将其输出。该输出被馈送到损耗函数。看来我的渐变色没有倒流,并且出现以下错误:
ValueError: No gradients provided for any variable, check your graph for ops that do not support gradients, between variables ["<tf.Variable 'cv/conv1_W:0' shape=(4, 4, 1, 16) dtype=float32_ref>", "<tf.Variable 'cv/conv1_b:0' shape=(16,) dtype=float32_ref>", "<tf.Variable 'fc/fc_1_W:0' shape=(400, 100) dtype=float32_ref>", "<tf.Variable 'fc/fc_1_b:0' shape=(100,) dtype=float32_ref>"] and loss Tensor("Mean:0", shape=(), dtype=float32).
但是,如果我从10x10x1
输入图像中提取图像,则一切正常。我需要从10x10x1
图像中提取位置,然后从10x10x3
原始图像中提取实际的补丁内容。位置可能不一定总是准确的,因此我需要训练我的网络以改善输入10x10x1
图像中给定的位置。因此,我需要能够提取补丁,计算梯度,改善权重并尝试再次提取。
我正在使用Tensorflow和Conv Nets执行此功能。我将不胜感激。谢谢。