tgjeon / TensorFlow-Tutorials-for-Time-Series

TensorFlow Tutorial for Time Series Prediction
MIT License
1.11k stars 418 forks source link

lstm-for-epf TypeError : Tensors in list passed to 'values' of 'Concat' Op have types [float64, float32] that don't all match #2

Open ad34 opened 8 years ago

ad34 commented 8 years ago

Hi,

I m trying to run the script lstm-for-epf.py with tensorflow 0.10

the execution abort due to the following error

File ".../tensorflow/TensorFlow-Tutorials-for-Time-Series-master/lstm_predictor.py", line 117, in _lstm_model output, layers = tf.nn.rnn(stackedlstm, x, dtype=dtypes.float32) File "/Library/Python/2.7/site-packages/tensorflow/python/ops/rnn.py", line 219, in rnn (output, state) = call_cell() File "/Library/Python/2.7/site-packages/tensorflow/python/ops/rnn.py", line 206, in callcell = lambda: cell(input, state) File "/Library/Python/2.7/site-packages/tensorflow/python/ops/rnn_cell.py", line 812, in call cur_inp, new_state = cell(cur_inp, cur_state) File "/Library/Python/2.7/site-packages/tensorflow/python/ops/rnn_cell.py", line 310, in call concat = _linear([inputs, h], 4 * self._num_units, True) File "/Library/Python/2.7/site-packages/tensorflow/python/ops/rnn_cell.py", line 906, in _linear res = math_ops.matmul(array_ops.concat(1, args), matrix) File "/Library/Python/2.7/site-packages/tensorflow/python/ops/array_ops.py", line 697, in concat name=name) File "/Library/Python/2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 414, in _concat values=values, name=name) File "/Library/Python/2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 437, in apply_op raise TypeError("%s that don't all match." % prefix) TypeError: Tensors in list passed to 'values' of 'Concat' Op have types [float64, float32] that don't all match.

there is a float64/32 conversion issue.

adding this in _lstm_model fix the issue.

X = tf.cast(X,tf.float32)

there is probably another better fix, I just started playing with the code :)

arnoutaertgeerts commented 7 years ago

I think this is a good solution. TensorFlow works best with the float32 type but the np.sin function creates a float64 type array. This causes an error in TensorFlow >0.9.

ad34 commented 7 years ago

@arnoutaertgeerts after making the change I still have errors. as the project dont seems to be active anymore I will probably try to port it to tensorflow >0.9 on my side.

tgjeon commented 7 years ago

Thanks for the interesting on this github. Now, I'm working on changing this repository into Keras.

ad34 commented 7 years ago

@tgjeon nice !

ghost commented 7 years ago

Hello - was this issue ever fixed? I have the same problem :/ I would like to use this code.

fayazahasan commented 7 years ago

@ashleymaeconard I am working on time series predictions, facing similar issues as yours. Did you find a solution??

0b01 commented 7 years ago

@ashleymaeconard @fayazahasan

The original poster added the fix in his post.

Add this line...

X = tf.cast(X,tf.float32)

to... https://github.com/tgjeon/TensorFlow-Tutorials-for-Time-Series/blob/4672e506a8a0364c4b58d591e5d9486ce0e0269c/lstm_predictor.py#L114

0b01 commented 7 years ago

I encountered this error from using google/seq2seq. This answer also applies.