Понимание формы ввода lstm в керах с различной последовательностью

Я очень новичок в keras, а также на python. У меня есть набор временных рядов с разной длиной последовательности (например, 1-я последовательность – 484000×128, вторая – 563110×128 и т. Д.) Я поместил последовательности в 3D-массив.

Мой вопрос заключается в том, как определить форму ввода, потому что я запутался. Я использовал DL4J, но концепция отличается от определения конфигурации сети.

Вот мой первый пробный код:

import numpy as np from keras.models import Sequential from keras.layers import Embedding,LSTM,Dense,Dropout ## Loading dummy data sequences = np.array([[[1,2,3],[1,2,3]], [[4,5,6],[4,5,6],[4,5,6]]]) y = np.array([[[0],[0]], [[1],[1],[1]]]) x_test=np.array([[2,3,2],[4,6,7],[1,2,1]]) y_test=np.array([0,1,1]) n_epochs=40 # model configration model = Sequential() model.add(LSTM(100, input_shape=(3,1), activation='tanh', recurrent_activation='hard_sigmoid')) # 100 num of LSTM units model.add(LSTM(100, activation='tanh', recurrent_activation='hard_sigmoid')) model.add(Dense(1, activation='softmax')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) print(model.summary()) ## training with batches of size 1 (each batch is a sequence) for epoch in range(n_epochs): for seq, label in zip(sequences, y): model.train(np.array([seq]), [label]) # train a batch at a time.. scores=model.evaluate(x_test, y_test) # evaluate batch at a time.. 

One Solution collect form web for “Понимание формы ввода lstm в керах с различной последовательностью”

Вот документы по входным формам для LSTM:

Формы ввода

3D-тензор с формой (batch_size, timesteps, input_dim), (необязательно) 2D-тензоры с формой (batch_size, output_dim).

Это означает, что вам понадобятся временные метки с постоянным размером для каждой партии.

Канонический способ сделать это – заполнить ваши последовательности, используя что-то вроде утилиты заполнения keras

то вы можете попробовать:

 # let say timestep you choose: is 700000 and dimension of the vectors are 128 timestep = 700000 dims = 128 model.add(LSTM(100, input_shape=(timestep, dim), activation='tanh', recurrent_activation='hard_sigmoid')) 

Я отредактировал ответ, чтобы удалить аргумент batch_size . При этой настройке размер партии не указан, вы можете установить это при установке модели (в model.fit() ).

  • Преобразование последовательности в функционал в Keras
  • Доступ к значениям градиента выходных данных модели keras по отношению к входам
  • Форма ввода LSTM в нейронной сети из кадра данных
  • Как обрабатывать форму ввода и вывода для keras LSTM
  • AttributeError: объект 'module' не имеет атрибута 'computation'
  • Прогнозировать использование данных с меньшими временными шагами (разное измерение) с использованием модели Keras RNN
  • ImportError: невозможно импортировать имя np_utils
  • Простейшая тренировка Lstm с Keras io
  • Python - лучший язык программирования в мире.