代码之家  ›  专栏  ›  技术社区  ›  Rohan Akut

为什么我在Keras中得到一个不正确的尺寸错误?

  •  0
  • Rohan Akut  · 技术社区  · 7 年前

    Error when checking target: expected dense_8 to have 4 dimensions, but got array with shape (36069, 1)

    这是我的模型和输入数据。

    x = x.reshape(48074,1,18,1)
    x_train = x[0:36069]
    x_val = x[36069:38472]
    x_test = x[38472:48074]
    y_train = y[0:36069]#36069
    y_val = y[36069:38472]
    y_test = y[38472:48074]
    model = Sequential()
    model.add(Dense(50),input_shape=(1,18,1))
    model.add(Dense(25))
    model.add(Dense(1))
    model.compile(loss='mean_squared_error', optimizer='adam')
    
    model.fit(x_train,y_train, epochs=200, batch_size=10, verbose=1,
              validation_data=(x_val, y_val))
    

    我试过了 model.summary()

    dense_9 (Dense)              (None, 1, 18, 50)         100       
    _________________________________________________________________
    dense_10 (Dense)             (None, 1, 18, 25)         1275      
    _________________________________________________________________
    dense_11 (Dense)             (None, 1, 18, 1)          26 
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Dr. Snoopy    7 年前

    您应该将数据展平,因为默认情况下,密集层只会对数据的最后一个维度进行操作。

    x = x.reshape(48074,1 * 18 * 1)
    x_train = x[0:36069]
    x_val = x[36069:38472]
    x_test = x[38472:48074]
    y_train = y[0:36069]#36069
    y_val = y[36069:38472]
    y_test = y[38472:48074]
    
    model = Sequential()
    model.add(Dense(50),input_shape=(1 * 18 * 1,))
    model.add(Dense(25))
    model.add(Dense(1))
    model.compile(loss='mean_squared_error', optimizer='adam')
    
    model.fit(x_train,y_train, epochs=200, batch_size=10, verbose=1,
              validation_data=(x_val, y_val))