イムにLSTMの接続:は、次のコードを使用してTensorflowで完全に接続された層へのLSTM層からの接続をしようとしTensorflow
# lstm_outputs has shape 1x10x100
rnn_out = tf.reshape(lstm_outputs, [-1, 100])
# rnn_out has shape 10x100
は今、私はに1×10ベクトルを追加しますRNNからの出力を受け取り、この新しいテンソルを完全に接続された層に供給する。
extra_params = tf.placeholder(shape=[1,10], dtype=tf.float32)
fc_input = tf.concat(1,[rnn_out,extra_params])
fc1 = slim.fully_connected(fc_input,o_size,
activation_fn=tf.nn.relu,
weights_initializer=tf.truncated_normal_initializer(),
biases_initializer=None)
コードは私にtf.concat
ラインに次のエラーを与えるしかし:
TypeError: Expected int32, got list containing Tensors of type '_Message' instead.
私は、このコードに関連する2つの質問があります:私は取得するために何をする必要がありますどのような
- を完全に接続された層に供給されると予想されるテンソルは?
- 実際には完全に接続されたレイヤーには何が供給されますか?それは1x1010テンソルですか、それとも10x110テンソルですか?沿った軸に続いて、それは最初
tf.Tensor
オブジェクトのリストを期待:TypeError
は(いつかTensorFlow 0.12入れ替え)tf.concat()
への引数の不適切な順序によって引き起こされる、あなたはTensorFlow 1.0を使用していると仮定すると
バッチサイズが1で、LSTMレイヤーへの入力が1x10x25のシェイプです。これはextra_paramsを追加するときに少し混乱しているのですが、入力を完全に連結されたレイヤーを単一の行ベクトル1xNoneにしたいのですが、LSTMレイヤー(10)の各タイムステップごとに1つの行があります。私は実際にこれを行う方法を失った。私の2番目の質問に対するコメント? – user3139545
ええ、その場合は、完全に接続されたレイヤーを各LSTMタイムステップに個別に適用したいと思うかもしれません。その場合、 'tf.reshape()'をそのままにして、 'tf.tile()'を使って 'extra_params'を完全に接続された層の正しい形にすることができます。 'fc_input = tf.concat([rnn、tf.tile(extra_params、[10、1]))' – mrry