【发布时间】:2018-02-21 05:30:37
【问题描述】:
我正在尝试这个非常简单的神经网络,它可以判断一个数字是奇数还是偶数。 标签: [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()
我的错误没有改变,我得到了错误的答案。有什么建议吗?
【问题讨论】:
-
数字的奇偶校验对于神经网络来说不是一个容易解决的问题。您是否先尝试过其他问题?就像一个简单的与门?你的训练集也很小,而且是硬编码的。您可以相当轻松地使用函数来生成训练数据,从而将网络暴露给更多场景。
-
另外你的隐藏层没有任何激活函数。
标签: machine-learning tensorflow neural-network artificial-intelligence