为什么我的体重不会更新?

时间:2017-09-12 16:42:17

标签: machine-learning tensorflow neural-network artificial-intelligence

我正在尝试这个非常简单的神经网络,它可以判断一个数字是奇数还是偶数。 标签:[1,0]表示它是均匀的。我正在使用两个输出神经元,因为我正在使用softmax函数。

我的代码:

import tensorflow as tf

data_in = [
            [1],
            [2],
            [3]
            ]
data_lbl = [
            [0, 1],
            [1, 0],
            [0, 1]
            ]


# HP

learning_rate = 0.1
epochs = 10000

ip = tf.placeholder('float', [None, 1])
labels = tf.placeholder('float', [None, 2])
w1 = tf.Variable(tf.random_normal([1, 2]))
w2 = tf.Variable(tf.random_normal([2, 2]))

l1 = tf.matmul(ip, w1)
l2 = tf.matmul(l1, w2)
l2 = tf.nn.softmax(l2)

loss = tf.reduce_mean((labels - l2)**2)
train = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

sess = tf.Session()

sess.run(tf.global_variables_initializer())

for epoch in range(epochs):
    _, err = sess.run([train, loss], feed_dict={ip: data_in, labels: data_lbl})
    print(err)

print(sess.run(l2, feed_dict={ip: [[2], [5], [7]]}))
# [it is, it's not]
# 1 = even

sess.close()

我的错误没有改变,我得到了错误的答案。建议?

1 个答案:

答案 0 :(得分:2)

你在这里有多个问题,修复这些问题至少应该为你提供一些学习某事的东西:

  • 除了最终的softmax之外,您的网络中没有任何非线性。您需要非线性,因为奇偶校验不是线性函数。
  • 你的中间层非常小。
  • 您的训练样本非常有限。
  • 你没有偏见。

此外,平价是一个很难学习的概念,所以它推广到训练集中没有的数字。