【问题标题】:ValueError: Error when checking input: expected dense_1_input to have 2 dimensions, but got array with shape (60000, 28, 28)ValueError:检查输入时出错:预期dense_1_input有2维,但得到了形状为(60000、28、28)的数组
【发布时间】:2019-12-17 03:04:50
【问题描述】:

我正在尝试训练我的深度神经网络识别手写数字,但我不断收到标题中前面所述的错误,我不知道为什么。

我尝试重塑“x_train”和“y_train”,但没有改变结果。 model.add(Flatten()) 也不起作用。

import matplotlib.pyplot as plt
import keras
from keras import optimizers
from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten
from keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

train_images = x_train.reshape(60000, 784)
test_images = x_test.reshape(10000, 784)
train_images = train_images.astype('float32')
test_images = test_images.astype('float32')
train_images /= 255
test_images /= 255

train_labels = keras.utils.to_categorical(y_train, 10)
test_labels = keras.utils.to_categorical(y_test, 10)

model = Sequential()

model.add(Dense(512, activation="relu", input_shape=(784,)))

for x in range (0, 10):
    model.add(Dense(512, activation="relu"))

model.add(Dense(10, activation="softmax"))
model.summary()

model.compile(optimizer="rmsprop", loss="binary_crossentropy", metrics=['accuracy'])

model.fit(x_train, y_train, epochs=100, verbose=2, validation_split=0.0, shuffle=True, initial_epoch=0, validation_data=(train_images, train_labels), steps_per_epoch=10, validation_steps=10, validation_freq=1)

我期待培训开始,但我得到了这个错误:ValueError: Error when checks input: expected dense_1_input to have 2 dimensions, but got array with shape (60000, 28, 28)。

【问题讨论】:

    标签: python keras


    【解决方案1】:

    您正在传递训练数据集而不对其进行整形。

    代替这一行:

    model.fit(x_train, y_train, epochs=100, verbose=2, validation_split=0.0, shuffle=True, initial_epoch=0, validation_data=(train_images, train_labels), steps_per_epoch=10, validation_steps=10, validation_freq=1)
    

    使用这个:

    model.fit(train_images, train_labels, epochs=100, verbose=2, validation_split=0.0, shuffle=True, initial_epoch=0, validation_data=(train_images, train_labels), steps_per_epoch=10, validation_steps=10)
    

    【讨论】:

      【解决方案2】:

      您需要将数据集从形状 (n, width, height) 转换为 (n, depth, width, height)。

      X_train = X_train.reshape(X_train.shape[0], 1, 28, 28) X_test = X_test.reshape(X_test.shape[0], 1, 28, 28)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-01
        • 2020-06-06
        • 1970-01-01
        • 1970-01-01
        • 2019-05-31
        相关资源
        最近更新 更多