Input_shape ile ilgili hatanın 4 boyuta sahip olması bekleniyor, ancak şekle sahip bir dizi var (73257, 32, 32)

0

Soru

Bu şeklin gri tonlamalı görüntüleri var: x_train_grey.shape = (73257, 32, 32)

Bunun gibi ilk katmanı belirtiyorum:

Flatten(input_shape=(32,32,1)' Çünkü batch_size geçmiyorum ve gri tonlamalı görüntülerin yalnızca 1 kanalı var. Ama bu hatayı alıyorum:

ValueError: Error when checking input: expected flatten_1_input to have 4 dimensions, but got an array with shape (73257, 32, 32)

Neyin yanlış olduğunu anlamıyorum, lütfen yardım edin. Bunun birçok kez sorulduğunu anlıyorum, ancak bir çözüm bulamıyorum.

Şerefe!

2

En iyi cevabı

1

Sorun muhtemelen verilerinizi modelinize aktarma şeklinizde yatmaktadır. Giriş şekliniz (batch_size, 32, 32) o zaman böyle bir şey dene:

import tensorflow as tf

grey_scale_images = tf.random.normal((64, 32, 32))

model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(32,32,1)))

print(model(grey_scale_images).shape)
# (64, 1024)

Güncelleme: Her ikisi de input_shape=(32,32,1) ve input_shape=(32,32) çalışacak. Verilerinizi modelinize nasıl beslediğinize bağlıdır:

import tensorflow as tf

grey_scale_images = tf.random.normal((64, 32, 32))
Y = tf.random.normal((64, 1024))
model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(32, 32, 1)))
model.compile(loss='MSE')
model.fit(grey_scale_images, Y)
2021-11-24 08:40:01

Aslında, sadece geçmek input_shape=(32,32) işe yaradı, teşekkürler!
mankojag

Sanırım sen yanlış...Güncellenmiş cevabımı kontrol et.
AloneTogether

Teşekkürler ama bunun doğru olduğundan pek emin değilim. Denedim input_shape=(32,32,1) ama işe yaramıyor. Bunu geçmeden önce ne yapılması gerektiğini öneriyorsunuz input_shape=(32,32)? Bunu söyleyen bir kural var mı (32,32,1) üzerinde kullanılmalıdır (32,32) yoksa her iki seçeneğin de işe yaradığını söylediğiniz gibi önemli değil mi?
mankojag

Cevabımın altına bak. Hem iş dediğim gibi ama veri ne kadar bağlıdır
AloneTogether
-1

Hala bu şeyleri de öğreniyorum ama bir boyutun girdi sayısı olarak "1" in mümkün olmadığını tahmin ediyorum. Mümkün olsa bile, bu bir başlangıç. bir eksenin boyutu olarak "1" bana mantıklı gelmiyor. Başka kimse var mı?

2021-11-24 07:34:08

Teşekkürler, gerçekten input_shape=(32,32) iyi çalışıyor gibi görünüyor
mankojag

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................