question about the initial_state of decoder
Hi, I am wonder that how to initialize the state of the encoder and decoder. I tried both encoder_states and [a1, b1] to initialize the state of the decoder_lstm2 but got bad result. I can get good results when I use only decoder_lstm1 with one or several encoders which without initialize the state. Could you please help me? Here is my code.
encoder_inputs = Input(shape=(max_video_length, 4096), dtype='float32') encoder = LSTM(latent_dim, return_state=True) encoder_outputs, state_h, state_c = encoder(encoder_outputs2) encoder_states = [state_h, state_c]
decoder_inputs = Input(shape=(None, len(char_list)), name="decoder_inputs") decoder_lstm1 = LSTM(latent_dim, return_sequences=True, return_state=True, name="decoder_lstm1") decoder_lstm2 = LSTM(latent_dim, return_sequences=True, return_state=True, name="decoder_lstm2") decoder_dense = Dense(len(char_list), activation='softmax')
decoder_outputs, a1, b1 = decoder_lstm1(decoder_inputs, initial_state=encoder_states) decoder_outputs, a2, b2 = decoder_lstm2(decoder_outputs, initial_state=encoder_states) decoder_outputs = decoder_dense(decoder_outputs)
model = Model([encoder_inputs, decoder_inputs], decoder_outputs)
Hello! Could you please tell me how you ran it successfully? Because when I ran the 'test.py' whose codes are the same as 'encoder_decoder.py' 's, there's an error I don't know how to deal with :
Traceback (most recent call last):
File "/Users/Downloads/encoder_decoder-master/test.py", line 202, in <module>
main()
File "/Users/Downloads/encoder_decoder-master/test.py", line 184, in main
en_de_model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
File "/Users/Downloads/encoder_decoder-master/keras/models.py", line 507, in compile
self.y_train = self.get_output(train=True)
File "/Users/Downloads/encoder_decoder-master/keras/layers/containers.py", line 130, in get_output
return self.layers[-1].get_output(train)
File "/Users/Downloads/encoder_decoder-master/keras/layers/core.py", line 737, in get_output
X = self.get_input(train)
File "/Users/Downloads/encoder_decoder-master/keras/layers/core.py", line 241, in get_input
previous_output = self.previous.get_output(train=train)
File "/Users/Downloads/encoder_decoder-master/keras/layers/core.py", line 1148, in get_output
X = self.get_input(train) # (samples, timesteps, input_dim)
File "/Users/Downloads/encoder_decoder-master/keras/layers/core.py", line 241, in get_input
previous_output = self.previous.get_output(train=train)
File "/Users/Downloads/encoder_decoder-master/keras/layers/recurrent.py", line 168, in get_output
X = self.get_input(train)
File "/Users/Downloads/encoder_decoder-master/keras/layers/core.py", line 241, in get_input
previous_output = self.previous.get_output(train=train)
File "/Users/Downloads/encoder_decoder-master/keras/layers/core.py", line 926, in get_output
X = self.get_input(train)
File "/Users/Downloads/encoder_decoder-master/keras/layers/core.py", line 241, in get_input
previous_output = self.previous.get_output(train=train)
File "/Users/Downloads/encoder_decoder-master/keras/layers/recurrent.py", line 188, in get_output
preprocessed_input = self.preprocess_input(X, train)
File "/Users/Downloads/encoder_decoder-master/keras/layers/recurrent.py", line 661, in preprocess_input
return K.concatenate([x_i, x_f, x_c, x_o], axis=2)
File "/Users/Downloads/encoder_decoder-master/keras/backend/tensorflow_backend.py", line 267, in concatenate
return tf.concat(axis, tensors)
File "/Users/anaconda3/lib/python3.6/site-packages/tensorflow/python/util/dispatch.py", line 180, in wrapper
return target(*args, **kwargs)
File "/Users/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py", line 1254, in concat
tensor_shape.scalar())
File "/Users/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/tensor_shape.py", line 1023, in assert_is_compatible_with
raise ValueError("Shapes %s and %s are incompatible" % (self, other))
ValueError: Shapes (4, ?, 5, 20) and () are incompatible
@JillinJia The backend is Theano, and the version of python is 2.7.
Halo! I can't run your code also. (i've already used py2.7 and Theano as backend) Here is the error:
You can find the C code in this temporary file: /tmp/theano_compilation_error_N1MPcz
Traceback (most recent call last):
File "/home/xenia/GIT/encoder_decoder/encoder_decoder.py", line 6, in <module>
from keras.models import Sequential
File "/home/xenia/GIT/encoder_decoder/keras/models.py", line 15, in <module>
from . import backend as K
File "/home/xenia/GIT/encoder_decoder/keras/backend/__init__.py", line 46, in <module>
from .theano_backend import *
File "/home/xenia/GIT/encoder_decoder/keras/backend/theano_backend.py", line 1, in <module>
import theano
File "/home/xenia/GIT/encoder_decoder/venv/local/lib/python2.7/site-packages/theano/__init__.py", line 110, in <module>
from theano.compile import (
File "/home/xenia/GIT/encoder_decoder/venv/local/lib/python2.7/site-packages/theano/compile/__init__.py", line 12, in <module>
from theano.compile.mode import *
File "/home/xenia/GIT/encoder_decoder/venv/local/lib/python2.7/site-packages/theano/compile/mode.py", line 11, in <module>
import theano.gof.vm
File "/home/xenia/GIT/encoder_decoder/venv/local/lib/python2.7/site-packages/theano/gof/vm.py", line 674, in <module>
from . import lazylinker_c
File "/home/xenia/GIT/encoder_decoder/venv/local/lib/python2.7/site-packages/theano/gof/lazylinker_c.py", line 140, in <module>
preargs=args)
File "/home/xenia/GIT/encoder_decoder/venv/local/lib/python2.7/site-packages/theano/gof/cmodule.py", line 2411, in compile_str
(status, compile_stderr.replace('\n', '. ')))
Exception: Compilation failed (return status=1): /home/xenia/.theano/compiledir_Linux-5.8--generic-x86_64-with-Ubuntu-20.04-focal-x86_64-2.7.18-64/lazylinker_ext/mod.cpp:1:10: fatal error: Python.h: No such file or directory. 1 | #include <Python.h>. | ^~~~~~~~~~. compilation terminated..