我正在尝试在Keras中创建一个基本的神经网络模型,该模型将学习将正数加在一起,并且在调整训练数据以使其适合模型时遇到了麻烦:
我已经为第一个Dense层的“ input_shape”属性尝试了多种配置,但似乎无济于事。
# training data
training = np.array([[2,3],[4,5],[3,8],[2,9],[11,4],[13,5],[2,9]], dtype=float)
answers = np.array([5, 9, 11, 11, 15, 18, 11], dtype=float)
# create our model now:
model = tf.keras.Sequential([
tf.keras.layers.Dense(units=16, input_shape=(2,)),
tf.keras.layers.Dense(units=16, activation=tf.nn.relu),
tf.keras.layers.Dense(units=1)
])
# set up the compile parameters:
model.compile(loss='mean_squared_error',
optimizer=tf.keras.optimizers.Adam(.1))
#fit the model:
model.fit(training, answers, epochs=550, verbose=False)
print(model.predict([[7,9]]))
我希望它能正常运行并产生结果“ 16”,但出现以下错误:
"Traceback (most recent call last):
File "c2f", line 27, in <module>
print(model.predict([[7,9]]))
File "C:\Users\Aalok\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1096, in predict
x, check_steps=True, steps_name='steps', steps=steps)
File "C:\Users\Aalok\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow\python\keras\engine\training.py", line 2382, in _standardize_user_data
exception_prefix='input')
File "C:\Users\Aalok\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow\python\keras\engine\training_utils.py", line 362, in standardize_input_data
' but got array with shape ' + str(data_shape))
ValueError:检查输入时出错:预期density_input具有形状(2,)但具有形状(1,)的数组
答案 0 :(得分:1)
得到了错误。根据堆栈跟踪,此行中的错误是
print(model.predict([[7,9]]))
现在,Keras顺序模型期望输入以NumPy数组(ndarray
)的形式。在上一行中,模型将数组解释为多个输入上的列表(这不是您的情况)。
根据official docs,x
中的参数model.fit()
为
大量训练数据(如果模型只有一个输入),或者 Numpy数组的列表(如果模型具有多个输入)。如果输入 在模型中命名图层,还可以通过字典映射 输入名称到Numpy数组。如果从 框架本机张量(例如TensorFlow数据张量)。
我们需要使用numpy.array()
创建一个NumPy数组,
print(model.predict(np.array([[7,9]])))
错误已解决。我已经运行了代码,它运行正常。