Keras神经网络在训练时仅返回0.00e + 00的准确性

时间:2018-02-18 20:27:38

标签: python-3.x neural-network keras

我试图运行一个神经网络,其中输入数据的形状为(116,2,3 * 58),输出的形状为(116,2,1)。目标是,当来自给定的58个人名单的3个人的2个团队相互对抗时,预测每个团队的分数。

输入数组代表116个匹配,每个匹配2个团队,每个团队3个人,每个人一个热门编码为长度为58的二进制数组(除标签列表中团队的索引处的1.0外,均为0.0) )。输出返回每个团队的预期分数。分数范围从0到600。

然而,当我训练网时,准确度总是返回0.00e + 00。我究竟做错了什么?我试过this,但它没有改变任何东西。

这是我的代码:

def ec(val, labels):
    return [1.0 if x == val else 0.0 for x in labels]

lb = open("labels.txt")
labels =  [line.replace("\n", "") for line in lb.readlines()][::3]

trainingInput = np.load("trainingInput.npy")
trainingOutput = np.load("trainingOutput.npy")
trainingInput.resize(116, 2, 3*58)

pprint(list(trainingOutput))


inp = Input(batch_shape=(None, 2, 3*58))
d1 = Dense(16, activation='relu')(inp)
d2 = Dense(32, activation='relu')(d1)
out = Dense(1, activation='linear')(d2)

model = Model(inputs=inp, outputs=out)
lrSet = SGD(lr=0.00001)

model.compile(loss='mean_absolute_error', optimizer=lrSet, metrics=['accuracy'])
model.fit(trainingInput, trainingOutput, batch_size=8, epochs=50, verbose=1, validation_split=0.1)

test = np.array([np.array([np.array([ec(sys.argv[0], labels), ec(sys.argv[1], labels), ec(sys.argv[2], labels)]), np.array([ec(sys.argv[3], labels), ec(sys.argv[4], labels), ec(sys.argv[5], labels)])])])
test.resize(1, 2, 3*58)

print(list(model.predict(test)))

0 个答案:

没有答案