我创建了一个应该学习识别偶数和奇数的代码,给出“是”或“否”的答案。该脚本在训练期间不会显示任何错误,它的准确度约为 55%,但当我尝试输入第三方数字(在我的例子中为 33)时,它会生成某种代码。如何将其转换为“是”或“否”?
import numpy as np
from keras.models import Sequential
from keras.layers import LSTM, Dense
from keras.utils import to_categorical
# Data preparation
X = np.array([2,3,4,5,6,7,8,9,10])
y = np.array(['yes','no','yes','no','yes','no','yes','no','yes'])
# encode the labels
classes = ['yes', 'no']
y = to_categorical([classes.index(label) for label in y])
X = array(X).reshape(9, 1, 1)
# Define the LSTM model
model = Sequential()
model.add(LSTM(128, input_shape=(1,1)))
model.add(Dense(len(classes), activation='sigmoid'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, y, epochs=10, batch_size=1)
# Make predictions
X = np.array([33])
test_input = X.reshape((1, 1, 1))
test_output = model.predict(test_input, verbose=0)
print (test_output)
我运行了你的脚本,结果是这样的:
这不是“某种代码”,而是样本属于列表中的类的概率
classes
。那些。第一类“是”的预测概率约为 55%,第二类“否”的预测概率为 46%。您可以以编程方式将这些概率转换为特定的预测,如下所示(对于单个结果):
结论:
PS但总的来说,这是某种废话,所以你不会预测任何有价值的东西。神经网络并不是一个神奇的黑匣子;它们也需要一些信息来预测某些事情。您的数据根本不包含做出此类预测所需的信息。