简单的单层神经网络

时间:2020-04-12 06:31:21

标签: python tensorflow machine-learning keras neural-network

我正在编写一个非常简单的网络:

import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np

training_data = np.array([[1, 1, 1], [2, 3, 1], [0, -1, 4], [0, 3, 0], [10, -6, 8], [-3, -12, 4]])
testing_data = np.array([6, 11, 1, 9, 10, -38])

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(units = 1, activation = tf.keras.activations.relu, input_shape = (3, )))
model.compile(optimizer = tf.keras.optimizers.RMSprop(0.001), loss = tf.keras.losses.mean_squared_error, metrics = tf.keras.metrics.mean_squared_error)
model.summary()
model.fit(training_data, testing_data, epochs = 1, verbose = 'False')
print("Traning completed.")
model.predict(np.array([1, 1, 1]))

目标是训练权重,例如:aX + bY + cZ =(输出)
但是我得到了错误

ValueError:sequence_54层的输入0与该层不兼容:预期输入形状的轴-1具有值3,但接收到形状为[None,1]的输入


我无法显示尺寸图,这是我做错了!有帮助吗?

1 个答案:

答案 0 :(得分:1)

在Keras中,当您指定输入形状批次大小时,请忽略here以获取更多详细信息。您对input_shape = (3, )的声明是正确的,但是在进行推断时,您还需要考虑批次大小,方法是为批次大小添加一个额外的尺寸,因此您需要{{1}来代替np.array([1, 1, 1]) }。

np.array([[1, 1, 1]])

希望这会有所帮助!