keras 层“顺序”的输入0与层不兼容:预期形状.......找到的形状=(无,143)

pxy2qtax  于 2023-02-08  发布在  其他
关注(0)|答案(1)|浏览(171)

我是一个初学者在机器学习,我试图训练一个模型与nltk和tensorflow。但我得到以下错误,当我运行我的程序。我理解的问题。它似乎我的形状列表不通过,但我不知道为什么,我没有找到任何救济。我指定我使用的列表与不同大小的列表列表。需要帮助请我需要了解,解决并向前推进代码和错误:

我试图用nltk和tensorflow来训练一个模型,但是看起来我的列表的形状没有通过,但是我不知道为什么,我没有发现任何缓解。我指定我使用不同大小的列表的列表。
github代码:https://github.com/maeltoukap/whatsapp-chat-bot

rur96b6h

rur96b6h1#

首先,你错过了两个重塑步骤。你需要添加线条

train_x = np.expand_dims(train_x, axis=1)
train_y = np.expand_dims(train_y, axis=1)

在你定义了train_xtrain_y之后(在图片的第67行之后),你输入的形状就是你第一个训练样本的形状,所以把input_shape: train_x[0]改为input_shape: train_x[0].shape,同时改变最后一个密集层的神经元数量,现在你最后一个密集层的神经元数量是Dense(len(train_y[0])...,你需要把它改为Dense(30, ...),然后你就可以做好了。
完整的代码如下所示:

random.shuffle(training)
training = np.array(training, dtype=object)

train_x = list(training[:, 0])
train_y = list(training[:, 1])
train_x = np.expand_dims(train_x, axis=1)
train_y = np.expand_dims(train_y, axis=1)

print(len(train_x))
model = Sequential()
# model.add(Dense(128, input_shape=113, activation='relu'))
model.add(Dense(128, input_shape=train_x[0].shape, activation='relu'))
# model.add(Dense(128, input_shape=(len(train_x[0])), activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(54, activation='relu'))
model.add(Dropout(0.5))
# model.add(Dense(113, activation='softmax'))
model.add(Dense(30, activation='softmax'))

sgd =  SGD(learning_rate=0.01, momentum=0.9, nesterov=True)
model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy'])


hist = model.fit(train_x, train_y, epochs=200, batch_size=5, verbose=1)

相关问题