import tensorflow as tf
from tensorflow import keras
import numpy as np
training_inputs = np.array([[0,0,1],
[1,1,1],
[1,0,1],
[0,1,1]])
training_outputs = np.array([[0,1,1,0]])
model = keras.Sequential([
keras.layers.Flatten(input_shape=(1,3)),
keras.layers.Dense(1,activation="sigmoid")
])
model.compile(optimizer = "rmsprop",
loss = "binary_crossentropy",
metrics = ["accuracy"])
model.fit(training_inputs,training_outputs,epochs=1)
prediction = model.predict(np.array([[1,1,0]]))
打印(预测)
它有这些问题
Traceback(最近一次调用最后一次): File"C:/用户/Αλέξης/Desktop/YouTube/test.py",第21行,model.fit(training_inputs,training_outputs,Epochs=1)File"C:\用户\Αλέξης\AppData\Local\程序\Python\Python37\lib\site-包\Tensorflow\python\keras\engine\training.py",第709行,in fit shuffle=Shuffle)File"C:\用户\Αλέξης\AppData\Local\程序\Python\Python37\lib\site-包\Tensorflow\Python\Keras\engine\training.py",第2651行,exception_prefix='input')File"C:\用户\Αλέξης\AppData\Local\程序\Python\Python37\lib\site-包\Tensorflow\python\keras\engine\training_utils.py",第376行,standardize_input_data'with form'str(data_shape)ValueError:检查输入时出错:预期flatten_input有3个维度,但得到了形状为(4,3)的数组
有人能帮忙吗?
我删除了训练输出数组的方括号,以便训练输入中的每个条目都有一个关联的类,而不仅仅是第一个具有4的类
我还删除了压平图层,并将input_shape参数设置为密集图层
import tensorflow as tf
from tensorflow import keras
import numpy as np
training_inputs = np.array([[0,0,1],
[1,1,1],
[1,0,1],
[0,1,1]])
training_outputs = np.array([0,1,1,0])
model = keras.Sequential([
keras.layers.Dense(1,activation="sigmoid",input_shape=(3,))
])
model.compile(optimizer = "rmsprop",
loss = "binary_crossentropy",
metrics = ["accuracy"])
model.fit(training_inputs,training_outputs,epochs=1)
如果您检查数组形状,您将看到问题
print(training_inputs.shape)
print(training_outputs.shape)
Output:
(4, 3)
(4,)
您的模型需要一个大小为(Batch size,3)的输入数组,这没关系。但是您的模型输出一个大小为(Batch size,1)的数组,因此您的标签数组必须具有相同的大小。您可以使用np轻松解决这个问题。expand_dims。
只是转
training_outputs = np.array([[0],[1],[1],[0]])
成
training_outputs = np.expand_dims(
np.array([0,1,1,0]),
axis = 1
)