TFLearn Классификация временных рядов LSTM

Я пытаюсь построить сеть LSTM, которая принимает последовательность и классифицирует последний временной шаг в каждой последовательности.

Вот что у меня есть на данный момент:

#build
net = tf.input_data(shape=[None, 64, 17])
net = tf.lstm(net, 128, dropout=[.2,.8], return_seq=True)
net = tf.lstm(net, 128, dropout=[.2,.8], return_seq=True)
net = tf.lstm(net, 128, dropout=[.2,.8])
net = tf.fully_connected(net, 3, activation='softmax')
net = tf.regression(net, optimizer='adam', learning_rate=0.01, loss='categorical_crossentropy')

#train
model = tf.DNN(net, tensorboard_verbose=0)
model.fit(trainX, trainY, validation_set=(testX,testY), show_metric=True, batch_size=None)

Мои данные были сформированы в большое количество последовательностей, каждая из которых имеет длину 64 временных шага. каждый временной шаг имеет 17 функций. Первая последовательность - это временные шаги от 0 до 63, вторая - временные шаги от 1 до 64 и т. Д.

Сеть строится нормально, но в подходящем методе я получаю такую ​​ошибку:

ValueError: невозможно передать значение shape (64,17) для Tensor 'InputData / X: 0', которое имеет shape (?, 64,17)

У кого-нибудь есть предложения по моей проблеме?


person Werhli    schedule 12.12.2017    source источник


Ответы (1)


Этого нет в вашем фрагменте, но похоже, что trainX имеет форму (64, 17). В таком случае вам следует преобразовать его в партию размером 1:

trainX = np.expand_dims(trainX, 0)  # now it's [1, 64, 17]

То же для testX.

person Maxim    schedule 12.12.2017