我正在尝试训练一个神经网络,该网络将被水平线(以及未来的角落)激活。
我画了一个包含垂直和水平线的图像(见下面的链接)。然后在 Photoshop 中,我在水平线的顶部绘制标记,即我希望网络激活的位置。
原始图像和标签图像如下所示:
现在任务看起来很简单,但我无法让 tensorflow 来训练这样一个网络。这是我的代码:
input = tf.convert_to_tensor(original, tf.float32)
label = tf.convert_to_tensor(lbl_hor, tf.float32)
W1 = tf.Variable(tf.random_normal([5,5,1,1]))
b1 = tf.Variable(0.1)
W2 = tf.Variable(tf.random_normal([5,5,1,1]))
b2 = tf.Variable(0.1)
l1 = tf.nn.conv2d(input, W1, [1,1,1,1], 'SAME')
l1 = l1 + b1
l1 = tf.nn.relu(l1)
l2 = tf.nn.conv2d(l1, W2, [1,1,1,1], 'SAME')
l2 = l2 + b2
l2 = tf.nn.relu(l2)
loss = tf.square(l2 - label)
loss_sum = tf.reduce_sum(loss)
train_op = tf.train.AdamOptimizer(0.01).minimize(loss)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for i in range(0, 100):
sess.run(train_op)
网络每次都会给出不可预测的输出,有时只是黑色。我试图将标签乘以一些常数,以便激活具有更大的权重 - 没有太大影响......
你能帮我弄清楚如何训练这样的网络或找出我的代码有什么问题吗?
相关分类