2017-03-28 1 views
3

다른 시간 간격 (다른 프레임 수)을 가진 입력으로 LSTM을 사용하려고합니다. rnn.static_rnn에 대한 입력은 tf의 시퀀스 여야합니다 (tf!가 아님). 따라서 입력을 시퀀스로 변환해야합니다. 나는 tf.unstack과 tf.split을 사용하려고 시도했지만, 두 입력은 정확한 입력 크기를 알아야하고, 입력의 한 차원 (시간 단계)은 다른 입력에 의해 변경됩니다. 내가 tf.unstack 사용하고 때tensorflow에서 하나의 None 차원으로 입력 (자리 표시 자)의 압축을 풉니 다 (자리 비움)

n_input = 256*256 # data input (img shape: 256*256) 
n_steps = None # timesteps 
batch_size = 1 
# tf Graph input 
x = tf.placeholder("float", [ batch_size , n_input,n_steps]) 
y = tf.placeholder("float", [batch_size, n_classes]) 
# Permuting batch_size and n_steps 
x1 = tf.transpose(x, [2, 1, 0]) 
x1 = tf.transpose(x1, [0, 2, 1]) 
x3=tf.unstack(x1,axis=0) 
#or x3 = tf.split(x2, ?, 0) 
# Define a lstm cell with tensorflow 
lstm_cell = rnn.BasicLSTMCell(num_units=n_hidden, forget_bias=1.0) 

# Get lstm cell output 
outputs, states = rnn.static_rnn(lstm_cell, x3, dtype=tf.float32,sequence_length=None) 

나는 오류 다음있어 : 일부 토론 herehere가, 또한

ValueError: Cannot infer num from shape (?, 1, 65536)

,하지만 그들 중 누구도 유용하지 않았다 다음은 내 코드의 일부입니다 나를. 어떤 도움을 주셔서 감사합니다.

답변

0

here에서 설명한 것처럼 tf.unstack은 인수가 지정되지 않고 유추 할 수없는 경우 작동하지 않습니다.

코드에서 변환 후 x1의 모양은 [ n_steps, batch_size, n_input]이고 axis=0의 값은 None입니다.

관련 문제