【发布时间】:2019-11-06 16:56:59
【问题描述】:
我用 Python 中的 TensorFlow 2 做了我自己的第一个神经网络。 我的想法是建立一个神经网络,它能够找到将二进制数(8 位)转换为十进制数的解决方案。 几次尝试后:是的,它工作得非常精确!
但我不明白的是:准确度很低。
第二件事是:模型必须训练超过 200.000 个值! 256 个可能的答案。我的代码/模型的故障在哪里?
#dataset
def dataset(length, num):
global testdata, solution
testdata = np.random.randint(2, size=(num, length))
solution = testdata.copy()
solution = np.zeros((num, 1))
for i in range(num):
for n in range(length):
x = testdata [i,length - n -1] * (2 ** n)
solution [i] += x
length = 8
num = 220000
dataset (length, num)
#Modell
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(8, activation='relu'),
tf.keras.layers.Dense(1, activation='relu')
])
model.compile(optimizer='adam',
loss='mean_squared_error',
metrics=['accuracy'])
#Training und Evaluate
model.fit(testdata, solution, epochs=4)
model.evaluate(t_testdata, t_solution, verbose=2)
model.summary()
损失:6.6441e-05 - 准确度:0.0077
不应该是0.77或更高吗?
【问题讨论】:
-
准确率是一个没有意义的回归指标。只要您将机器精度降低 1 个单位,预测与标签不匹配。因此,对于正确分类的平均几率,它被视为零。这并不意味着它本身就是一个糟糕的预测。
-
如果你想使用准确度指标,你可能需要
activation='sigmoid'
标签: python tensorflow neural-network loss