keras ValueError:层“顺序”的输入0与层不兼容:期望的形状=(无,1,5),找到的形状=(无,5)

ct2axkht  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(174)

我已经将我的数据集拆分成了X_train和y_train Dataframe ,它们的形状分别为(371,5)和(371,),但我不明白为什么我总是得到上面的错误。代码如下:
`

import tensorflow as tf #machine learning
from sklearn import metrics

model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(1, 5)))
model.add(tf.keras.layers.Dense(200, activation = 'sigmoid'))
model.add(tf.keras.layers.Dense(3, activation='softmax'))

opt = tf.keras.optimizers.SGD(learning_rate=0.9)
model.compile(optimizer=opt,loss=tf.keras.losses.SparseCategoricalCrossentropy())

model.fit(X_train, y_train, epochs=10)

我不知道如何使它成为一个有效的输入到一个顺序层,我已经尝试了解决方案,从以前的职位,如使用X_train[1]作为一个参数在model.fit`无济于事。

goucqfw6

goucqfw61#

输入形状应该是单个样本的形状。在下面的示例中,输入数据有4行5列。每行代表一个样本,样本大小为(5,)。因此,第一层的输入形状应该是(5,)。

import numpy as np
import tensorflow as tf
#dummy data
x_train = np.array([[1,1,2,4,5],[2,25,6,5,6],[32,4,7,7,8],[8,9,0,8,9]], dtype="float")
y_train = np.array([0,1,2,2],dtype="float")
#model
model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(5,)))
model.add(tf.keras.layers.Dense(200, activation = 'sigmoid'))
model.add(tf.keras.layers.Dense(3, activation='softmax'))
opt = tf.keras.optimizers.SGD(learning_rate=0.9)
#compile
model.compile(optimizer=opt,loss=tf.keras.losses.SparseCategoricalCrossentropy())
history = model.fit(x_train,y_train,epochs=1200,verbose=False)

请相应地更改input_shape。谢谢!

相关问题