Итак, я пытаюсь использовать тензор потока для простой классификации, я сомневаюсь,
Если я использую LSTM для классификации текста (например, классификация настроений), то мы выполняем заполнение данных, после чего для подачи в тензорный поток LSTM мы используем word_embedding, поэтому после просмотра word_embedding 2 данные измерений становятся 3-мя измерениями, или матрица ранга 2 становится рангом 3 :
как если бы у меня было два текста:
import tensorflow as tf
text_seq=[[11,21,43,22,11,4,1,3,5,2,8],[4,2,11,4,11,0,0,0,0,0,0]] #2x11
#text_seq are index of words from word_to_index dict
a=tf.get_variable('word_embedding',shape=[50,50],dtype=tf.float32,initializer=tf.random_uniform_initializer(-0.01,0.01))
lookup=tf.nn.embedding_lookup(a,text_seq)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(lookup).shape)
Я получу:
(2, 11, 50)
Который я могу легко передать LSTM, потому что LSTM принимает ранг 3
Но моя проблема предполагается, если у меня есть числовые данные с плавающей точкой вместо текстовых данных, и я хочу использовать RNN для классификации,
Итак, предположим, мои данные:
import numpy as np
float_data=[[11.1,21.5,43.6,22.1,11.44],[33.5,12.7,7.4,73.1,89.1],[33.5,12.7,7.4,73.1,89.1],[33.5,12.7,7.4,73.1,89.1],[33.5,12.7,7.4,73.1,89.1],[33.5,12.7,7.4,73.1,89.1]]
labels=[1,2,3,4,5,6]
#2x5
batch_size=2
input_data_batch=[[11.1,21.5,43.6,22.1,11.44],[33.5,12.7,7.4,73.1,89.1]]
#now should I reshape my data to make it rank 3 like this
reshape_one=np.reshape(input_data_batch,[-1,batch_size,5])
print(reshape_one)
# or like this ?
reshape_two=np.reshape(input_data_batch,[batch_size,-1,5])
print(reshape_two)
выход:
first one
[[[11.1 21.5 43.6 22.1 11.44]
[33.5 12.7 7.4 73.1 89.1 ]]]
second one
[[[11.1 21.5 43.6 22.1 11.44]]
[[33.5 12.7 7.4 73.1 89.1 ]]]