У меня есть некоторые проблемы с измерениями, когда я использую DenseLayer в сочетании с TimeseriesGenerator.
Мои данные тренировок выглядят так:
X = (1 000 000, 6)
y = (1 000 000, 2)
Я поместил все это в TimeseriesGenerator:
train_gen = TimeseriesGenerator(X, y, length=4, batch_size=32, stride=1)
, и я получил:
train_gen[0][0].shape
(32, 4, 6)
train_gen[0][1].shape
(32, 2)
Впоследствии я создал простую модель:
optimizer = keras.optimizers.RMSprop()
model = Sequential()
model.add(Dense(12, input_shape=(4,6), activation='tanh'))
model.add(Dense(40, activation='tanh'))
model.add(Dense(2, activation='tanh'))
model.compile(loss='mean_absolute_error', optimizer= optimizer, metrics=['mean_absolute_error', 'accuracy'])
и последний шаг «примерка»:
mw = model.fit_generator(generator=train_gen, epochs=1, verbose=1)
Теперь я получаю ошибку. Последний слой имеет проблему измерения:
InvalidArgumentError: Incompatible shapes: [32,4,2] vs. [32,2] [Op:Sub] name: loss/dense_44_loss/sub/
Я полагаю, что модель хочет сравнить [32,4,2] размерный вывод модели с данными [32,2] размерных тренингов.
Я пока не нашел решения. Я думаю, что я определенно нуждаюсь в TimeseriesGenerator из-за моего исходного набора данных, который имеет 160 миллиардов выборок, и у меня недостаточно ОЗУ;) Кто-нибудь может мне помочь?