Chyba s input_shape očekává, že mají 4 rozměry, ale mám pole s tvar (73257, 32, 32)

0

Otázka

Mám odstíny šedé obrázky z tohoto tvaru: x_train_grey.shape = (73257, 32, 32)

Jsem určete první vrstva, jako je tento:

Flatten(input_shape=(32,32,1)' Protože nechci projít batch_size a odstíny šedé obrázky mají pouze 1 kanál. Ale já se tuto chybu:

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

Nechápu, co je špatně, prosím, pomozte. Chápu, že to byla požádána, mnohokrát, ale nemohu najít řešení.

Na zdraví!

2

Nejlepší odpověď

1

Problém pravděpodobně spočívá ve způsobu, jakým jste kolem vaše data do vašeho modelu. Pokud váš vstup tvar je (batch_size, 32, 32) pak zkusit něco jako tohle:

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)

Aktualizace: Oba input_shape=(32,32,1) a input_shape=(32,32) budou pracovat. To záleží na tom, jak jste krmení vaše data do vašeho modelu:

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

Ve skutečnosti, prostě kolem input_shape=(32,32) funguje, díky!
mankojag

Myslím, že se mýlíte...Zkontrolujte svůj aktualizovaný odpověď.
AloneTogether

Díky, ale nejsem si zcela jistý, že je to správné. Snažil jsem se input_shape=(32,32,1) ale nefunguje to. To, co navrhujete, musí být provedeno před předáním, že místo toho, input_shape=(32,32)? Je tam nějaké pravidlo, které říká, (32,32,1) by měly být použity více než (32,32) nebo je to jedno, jak říkáš obě možnosti práce?
mankojag

Podívejte se na spodní části moje odpověď. Jak jsem řekl, oba práci, ale záleží na tom, co vaše data vypadá
AloneTogether
-1

Stále se učím, tohle taky, ale řekl bych, že "1" jako dimenze počet položek není možné. I když je možné, že je to začátek. "1" jako velikost osy nedává mi to smysl. Nikoho jiného?

2021-11-24 07:34:08

Díky, opravdu input_shape=(32,32) se zdá být v pořádku
mankojag

V jiných jazycích

Tato stránka je v jiných jazycích

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