输入形状的预期轴 -1 的值为 20,但接收到的输入形状为(无,29)

Posted

技术标签:

【中文标题】输入形状的预期轴 -1 的值为 20,但接收到的输入形状为(无,29)【英文标题】:expected axis -1 of input shape to have value 20 but received input with shape (None, 29) 【发布时间】:2021-10-08 08:05:45 【问题描述】:

ValueError: 层序 66 的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 20,但接收到的输入形状为 (None, 29) 将张量流导入为 tf 从张量流导入 keras 从 tensorflow.keras 导入图层 从 keras.models 导入顺序 从 keras.layers 导入密集、辍学、激活 从 keras.optimizers 导入 SGD

# Generate dummy data
import numpy as np
x_train = np.random.random((1000, 29))
y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)
x_test = np.random.random((100, 20))
y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)

model = Sequential()
# Dense(64) is a fully-connected layer with 64 hidden units.
# in the first layer, you must specify the expected input data shape:
# here, 20-dimensional vectors.
model.add(Dense(64, activation='relu', input_dim=20))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])

model.fit(x_train, y_train,
          epochs=20,
          batch_size=128)
score = model.evaluate(x_test, y_test, batch_size=128)

请为我解释一下!谢谢。

【问题讨论】:

【参考方案1】:

学习:

Keras 模型基于输入数据和标签的 Numpy 数组构建。为了训练模型,我们通常使用函数。 用于多类 softmax 分类的多层人工神经网络 (MLP): https://keras.io/ko/getting-started/sequential-model-guide/

#x_train, và x_test có dạng 2 chiều nên số cột của x_train là số chiều vào cho mạng ở trên。

【讨论】:

以上是关于输入形状的预期轴 -1 的值为 20,但接收到的输入形状为(无,29)的主要内容,如果未能解决你的问题,请参考以下文章

批量大小未传递给 tf.keras 模型:“检查输入时出错:预期 input1 有 3 个维度,但得到的数组形状为 (a,b)”

预期输入有 4 个维度,但得到的数组具有形状

91家纺网,十三次更新,用于测试数据库连接网页问题,由于会出现错误网站,导致接收到的值为空。

Flutter 'showDatePicker' 抛出异常:错误:预期值为 'String' 类型,但得到类型为 'Null' 的值之一

ValueError:检查输入时出错:预期的dense_26_input具有形状(45781,)但得到的数组具有形状(2,)

检查输入时出错:预期 lstm_input 有 3 个维度,但得到了形状为 (160, 1000) 的数组