Mam zestaw danych, który ma kształt X: (1146165, 19, 22) i Y: (1146165,). To jest mój kod modelu:

import tensorflow as tf

train_data = tf.data.Dataset.from_tensor_slices((x_train, y_train))
valid_data = tf.data.Dataset.from_tensor_slices((x_valid, y_valid))

def create_model(shape=(19, 22)):
    tfkl = tf.keras.layers
    model = tf.keras.Sequential([
        tfkl.LSTM(128, return_sequences=True, input_shape=shape),
        tfkl.LSTM(64),
        tfkl.Dropout(0.3),
        tfkl.Dense(64, activation="linear"),
        tfkl.Dense(1)
    ])
    
    model.compile(loss='mean_absolute_error', optimizer="adam")
    return model

model = create_model()
model.summary()

Jak widać input_shape (19, 22), co ma rację, ale kiedy używam fit Dostaję błąd ValueError: Input 0 of layer sequential_15 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [19, 22]
Szukam odpowiedzi na stosie, ale większość z nich jest dlatego, że wymiar wejściowy jest (a, b) zamiast (a,b,c). Każda pomoc jest doceniana.

0
AerysS 9 październik 2020, 19:24

1 odpowiedź

Najlepsza odpowiedź

Jeśli chcesz dopasować swój model za pomocą tf.data.Dataset, musisz upewnić się, że zostanie ustawiony przed użyciem w model.fit. Do wyboru {{x2}

train_data = train_data.batch(batch_size)
model.fit(train_data)
1
Alperino 9 październik 2020, 17:02