Input_shape z Conv1D vrstva Keras

0

Otázka

Snažím sa, aby CNN model pre binárne klasifikácia non-image súboru. Môj model/ kód pracuje a produkuje veľmi dobré výsledky (presnosť vysoká), ale nie som schopný pochopiť input_shape parameter pre 1. vrstva Conv1D.

Tvar X alebo vstup (tu x_train_df) je (2000, 28). Má 28 vlastnosti a 2000 vzoriek. A tvar Y alebo štítkov (tu y_train_df) je (2000, 1).

model = Sequential()
model.add(Conv1D(filters = 64, kernel_size = 3, activation = 'relu', input_shape = (x_train_df.shape[1], 1)))
model.add(Conv1D(filters = 64, kernel_size = 3, activation = 'relu'))
model.add(MaxPooling1D(pool_size = 2))
model.add(Flatten())
model.add(Dense(100, activation = 'relu'))
model.add(Dense(1, activation = 'sigmoid'))

optimzr = Adam(learning_rate=0.005)
model.compile(loss='binary_crossentropy', optimizer=optimzr,  metrics=[[tf.keras.metrics.AUC(curve="ROC", name = 'auc')], [tf.keras.metrics.AUC(curve="PR", name = 'pr')]])

# running the fitting
model.fit(x_train_df, y_train_df, epochs = 2, batch_size = 32, validation_data = (x_val_df, y_val_df), verbose = 2)

Dal som input_shape ako (28, 1) (prevzaté odkaz na túto otázku).

Ale v Conv1D vrstva dokumentácia je napísané, že,

Pri použití tejto vrstvy ako prvá vrstva v modeli, poskytnúť input_shape argument (n-tice z čísla alebo Žiadne, napr. (10, 128) pre sekvencie 10 vektory 128-rozmerné vektory.

To, čo som pochopil z tento rozmer input_shape by mal byť (2000, 1) ako mám jeden 2000-rozmerné vektory. Ale dávať to, ako input_shape zobrazuje chyba, ako,

ValueError: Vstup 0 vrstva "sequential_25" nie je kompatibilná s vrstva: očakáva shape=(None, 2000, 1), nájsť shape=(None, 28)

Takže moja otázka je, čo by malo byť správne input_shape?

1

Najlepšiu odpoveď

0

Poďme zistiť, ako "Conv1D" trvá vstup.

>>> # The inputs are 128-length vectors with 10 timesteps, and the batch size
>>> # is 4.
>>> input_shape = (4, 10, 128)
>>> x = tf.random.normal(input_shape)
>>> y = tf.keras.layers.Conv1D(
... 32, 3, activation='relu',input_shape=input_shape[1:])(x)
>>> print(y.shape)
    (4, 8, 32)

3+D tensor s tvar: batch_shape + (kroky, input_dim)

Ako sme videli vyššie, existujú 128 funkcie, 10 timesteps a dávky s veľkosťou 4. Tak, Conv1D berie ako vstup (batch_size,timesteps,funkcie). To trvá 3D vstup. Povedzme, že sa rozhodnete veľkosti dávky ako 1 pre váš prípad. Musíte dať textu ako (1,2000,28).

2021-11-22 08:00:37

Tvorba textu ako (1,2000,28) urobili chybu ako ValueError: logits and labels must have the same shape, received ((None, 1) vs (None, 2000)). Tak som zmenil tvary, aby sa (2000, 28, 1) pre x_train_df a (2000, 1, 1) pre y_train_df ako je uvedené v tejto a že pracoval. Som zmätená o tom. To bude veľmi užitočné, ak by ste mohli vysvetliť, ako upraviť kód v otázke.
Badal

V iných jazykoch

Táto stránka je v iných jazykoch

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