Я пытаюсь сделать AutoEncoder и застрял в вышеупомянутой ошибке. Просмотр других сообщений на Stack Exchange не помог.
Вот ошибка полностью:
InvalidArgumentError: Can not squeeze dim[1], expected a dimension of 1, got 499
[[{{node metrics_12/acc/Squeeze}}]]
[[{{node ConstantFoldingCtrl/loss_12/time_distributed_6_loss/broadcast_weights/assert_broadcastable/AssertGuard/Switch_0}}]]
Я могу собрать свою модель. Вот оно:
Слой (тип) Выходная форма Параметр #
================================================== =============== lambda_7 (Lambda) (Нет, 499, 22) 0
_________________________________________________________________ cu_dnnlstm_14 (CuDNNLSTM) (нет, 300) 388800
_________________________________________________________________ repeat_vector_12 (RepeatVect (Нет, 499, 300) 0
_________________________________________________________________ cu_dnnlstm_15 (CuDNNLSTM) (нет, 499, 50) 70400
_________________________________________________________________ time_distributed_6 (TimeDist (None, 499, 22) 1122
================================================== =============== Всего параметров: 460,322 Обучаемые параметры: 460,322 Необучаемые параметры:
0
Лямбда-слой принимает дополненную последовательность формы (1499) и преобразует ее в единичный кадр с 22 возможными значениями. Затем я передаю это через кодирование CuDNNLSTM, вектор повторения, другой CuDNNLSTM, а затем распределенный по времени плотный слой с активацией softmax.
Я использую:
model.compile('rmsprop', 'sparse_categorical_crossentropy', metrics=['acc'])
А:
model.fit(s_min_one, s_min_one,
batch_size=batchS,
epochs=epochS,
verbose = 1,
shuffle=True)
Что дает мне мою ошибку.
Я использую разреженные категории, чтобы мои данные могли быть в целочисленном формате, принимая значения от 0 до 21 (для 22 функций). И я не понимаю, почему ошибка ожидает измерения 1 для чего-либо. Это почти как если бы я хотел, чтобы я перевернул свои столбцы и строки?