Conv1D katman Kera'larının giriş_ şekli

0

Soru

Görüntü olmayan bir veri kümesinin ikili sınıflandırması için bir CNN modeli yapmaya çalışıyorum. Modelim / kodum çalışıyor ve çok iyi sonuçlar veriyor (doğruluklar yüksek) ama anlayamıyorum input_shape 1. katman için parametre Conv1D.

X veya giriş şekli (burada x_train_df) (2000, 28) ' dir. 28 özelliğe ve 2000 örneğe sahiptir. Ve Y veya etiketlerin şekli (burada y_train_df) (2000, 1) ' dir.

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)

Ben verdim input_shape as (28, 1) (bu sorudan referans alınmıştır).

Ancak Conv1D katman belgelerinde şöyle yazılmıştır:,

Bu katmanı bir modeldeki ilk katman olarak kullanırken, bir ınput_shape argümanı (tamsayıların toplamı veya Hiçbiri, örneğin (10, 128) 128 boyutlu vektörlerden oluşan 10 vektör dizisi.

Bundan anladığım şey, 2000 tek boyutlu vektöre sahip olduğum için input_shape boyutunun (2000, 1) olması gerektiğidir. Ama bunu vermek input_shape bir hatayı şu şekilde gösterir,

ValueError: "sequential_25" katmanının 0 girişi ile uyumlu değil katman: beklenen şekil = (Yok, 2000, 1), bulunan şekil=(Yok, 28)

Yani benim sorum doğru ne olmalı input_shape?

1

En iyi cevabı

0

"Conv1D" nin nasıl girdi aldığını kontrol edelim.

>>> # 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)

Şekil ile 3 + D tensör: batch_shape +(adımlar, giriş_dim)

Yukarıda görüldüğü gibi, 128 özellikleri, 10 timesteps ve 4 toplu iş boyutu vardır. Yani, Conv1D girdi olarak alır (batch_size, timesteps, features). 3D girişi gerektirir. Davanız için parti boyutunu 1 olarak seçtiğinizi varsayalım. (1,2000,28) gibi girdi vermelisiniz.

2021-11-22 08:00:37

Girişi (1,2000,28) olarak yapmak aşağıdaki gibi bir hata yaptı ValueError: logits and labels must have the same shape, received ((None, 1) vs (None, 2000)). Bu yüzden şekilleri (2000, 28, 1) olarak değiştirdim x_train_df ve (2000, 1, 1) için y_train_df bunda gösterildiği gibi ve işe yaradı. Bu konuda kafam karıştı. Söz konusu kodun nasıl değiştirileceğini açıklayabilirseniz çok yararlı olacaktır.
Badal

Diğer dillerde

Bu sayfa diğer dillerde

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