Machine learning 为什么不';我的体重没有更新吗?

Machine learning 为什么不';我的体重没有更新吗?,machine-learning,tensorflow,neural-network,artificial-intelligence,Machine Learning,Tensorflow,Neural Network,Artificial Intelligence,我正在尝试这个非常简单的神经网络,它可以判断一个数字是奇数还是偶数。 标签:[1,0]表示它是偶数。我使用两个输出神经元,因为我使用的是softmax函数 我的代码: 将tensorflow导入为tf 数据_in=[ [1], [2], [3] ] 数据_lbl=[ [0, 1], [1, 0], [0, 1] ] #惠普 学习率=0.1 纪元=10000 ip=tf.placeholder('float',[None,1]) labels=tf.placeholder('float',[Non

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

我的代码:

将tensorflow导入为tf
数据_in=[
[1],
[2],
[3]
]
数据_lbl=[
[0, 1],
[1, 0],
[0, 1]
]
#惠普
学习率=0.1
纪元=10000
ip=tf.placeholder('float',[None,1])
labels=tf.placeholder('float',[None,2])
w1=tf.变量(tf.随机_正态([1,2]))
w2=tf.变量(tf.随机_正态([2,2]))
l1=tf.matmul(ip,w1)
l2=tf.matmul(l1,w2)
l2=tf.nn.softmax(l2)
损失=tf.减少平均值((标签-l2)**2)
train=tf.train.GradientDescentOptimizer(学习率)。最小化(损失)
sess=tf.Session()
sess.run(tf.global\u variables\u initializer())
对于范围内的历元(历元):
_,err=sess.run([train,loss],feed\u dict={ip:data\u in,labels:data\u lbl})
打印(错误)
打印(sess.run(l2,feed_dict={ip:[2],[5],[7]}))
#[是,不是]
#1=偶数
sess.close()

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

这里有多个问题,解决这些问题至少会让你学到一些东西:

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

此外,奇偶校验是一个很难学习的概念,因此它可以推广到训练集中没有的数字。

对于NN来说,数字奇偶校验不是一个容易解决的问题。你是否先尝试过其他问题?像一个简单的与门?您的培训集也非常小,而且是硬编码的。你可以很容易地使用一个函数来生成训练数据,使网络暴露在更多的场景中。而且你的隐藏层上没有任何激活函数。