簡體   English   中英

ValueError: 層序號_2 的輸入 0 與層不兼容

[英]ValueError: Input 0 of layer sequential_2 is incompatible with the layer

我有以下代碼:

import tensorflow as tf
import keras
from keras.datasets import cifar10

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

import numpy as np

x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], x_train.shape[2], 3))
print(x_train.shape)
x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], x_test.shape[2], 3))
print(x_test.shape)

x_train = x_train.astype('float32')/255.0
x_test  = x_test.astype('float32')/255.0

from keras.utils import to_categorical
y_train = to_categorical(y_train, num_classes = 10)
y_test = to_categorical(y_test, num_classes = 10)

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten

model = Sequential()
#Defining layers of the model
model.add(Dense(2056, activation='relu', input_shape = (3072,)))
model.add(Dense(10, activation='softmax')) 

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()

history = model.fit(x_train, y_train, batch_size=1000, epochs=50)

我面臨以下錯誤:

ValueError:層序 2 的輸入 0 與層不兼容:輸入形狀的預期軸 -1 具有值 3072,但接收到形狀為 (1000, 32, 32, 3) 的輸入

我只想將 input_shape 保持為 3072。 如何重塑我的 y_test 來解決這個問題?

在將輸入數據傳遞給Dense層之前,您應該先Flatten輸入數據。

model = Sequential()
#Defining layers of the model
model.add(Flatten(input_shape=(32,32,3)) # 32*32*3 = 3072
model.add(Dense(2056, activation='relu'))
model.add(Dense(10, activation='softmax')) 

這應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM