簡體   English   中英

將圖像擬合到張量流Keras的Conv2D層中時出錯

[英]Error fitting images into Conv2D layer in tensorflow Keras

我正在喀拉拉邦建立CNN,無法輸入數據。

我的圖像的形狀為(-1、40、52、1)。 我嘗試通過inputLayer層(也需要4個尺寸)來擬合它們,但最終為我的conv層提供了5D輸入。

...
train_images.reshape(-1, 40, 52, 1)
test_images.reshape(-1, 40, 52, 1)

#Model
num_classes = 10
model = keras.Sequential()

model.add(keras.layers.InputLayer(input_shape=[1,40,52,1]))
model.add(keras.layers.Conv2D(filters = 32, kernel_size=5, strides=1, padding ='same', activation='relu'))
model.add(keras.layers.MaxPooling2D(pool_size=5, padding='same'))

model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(512, activation='relu'))
model.add(keras.layers.Dense(num_classes, activation='softmax'))
model.summary()


#Compile model
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
          loss='categorical_crossentropy',
          metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=10, validation_data= 
(test_images, test_labels), verbose=1)

我正在尋找一種適合我的圖像的方法。 但是當我運行它時,我得到了錯誤:

ValueError:conv2d層的輸入0與該層不兼容:預期ndim = 4,找到的ndim = 5。 收到完整的圖形:[無,1、40、52、1]

您無需添加batch_size

model.add(keras.layers.InputLayer(input_shape=[40,52,1]))

感謝您的反饋,但我決定采用其他方法。

將一維數組分成2個,並制成2D“圖像”,如下所示:

[[1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]]

代替:

[1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]

這重塑了我的數據庫

-1、40、52、1

至:

-1,2,26,1

所以我然后固定了我的輸入層: model.add(keras.layers.InputLayer(input_shape=[2,26,1]))

暫無
暫無

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

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