我正在使用TensorFlow Keras为一组数据创建机器学习模型。我已经能够编译模型,但是当我尝试运行预测时,出现以下错误:
prediction = model.predict(test)
File "C:\Users\mbaker\PycharmProjects\UnileverPatentWatch\venv\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1864, in predict
x, check_steps=True, steps_name='steps', steps=steps)
File "C:\Users\mbaker\PycharmProjects\UnileverPatentWatch\venv\lib\site-packages\tensorflow\python\keras\engine\training.py", line 992, in _standardize_user_data
class_weight, batch_size)
File "C:\Users\mbaker\PycharmProjects\UnileverPatentWatch\venv\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1117, in _standardize_weights
exception_prefix='input')
File "C:\Users\mbaker\PycharmProjects\UnileverPatentWatch\venv\lib\site-packages\tensorflow\python\keras\engine\training_utils.py", line 332, in standardize_input_data
' but got array with shape ' + str(data_shape))
ValueError: Error when checking input: expected flatten_input to have shape (1872,) but got array with shape (1,)
我的ML代码是:
train_features = np.array(train_features)
model = keras.Sequential([
keras.layers.Flatten(input_shape=(len(train_features[0]),)),
keras.layers.Dense(512, activation=tf.nn.relu),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(7, activation=tf.nn.softmax)
])
model.compile(optimizer=tf.train.AdamOptimizer(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_features, train_labels, epochs=10)
x = 0
for test in test_features:
test = np.array(test)
print(test)
print(len(test))
prediction = model.predict(test)
print(test_patents[x], prediction, labelIndex[prediction])
x += 1
test_features是我要为其预测的功能集的列表。我尝试过交替地将功能集作为numpy数组传递(如上所示)或作为列表传递,并且两种方法均导致上述错误。数据以与训练模型相同的格式传递给预测函数。任何帮助将不胜感激。