私はTensor FlowでLSTMを扱おうとしています。私はチュートリアルをオンラインで見つけました。一連のシーケンスが取り込まれ、目的関数はLSTMの最後の出力と既知の値で構成されています。しかし、私は目的関数が各出力からの情報を使用するようにしたいと思います。具体的には、私は(つまり、文章中の単語のすべての文字を学ぶ)LSTMは、シーケンスのセットを学ぶ持ってしようとしています。:Tensorflow:コストのためのテンソルの一覧
cell = rnn_cell.BasicLSTMCell(num_units)
inputs = [tf.placeholder(tf.float32,shape=[batch_size,input_size]) for _ in range(seq_len)]
result = [tf.placeholder(tf.float32, shape=[batch_size,input_size]) for _ in range(seq_len)]
W_o = tf.Variable(tf.random_normal([num_units,input_size], stddev=0.01))
b_o = tf.Variable(tf.random_normal([input_size], stddev=0.01))
outputs, states = rnn.rnn(cell, inputs, dtype=tf.float32)
losses = []
for i in xrange(len(outputs)):
final_transformed_val = tf.matmul(outputs[i],W_o) + b_o
losses.append(tf.nn.softmax(final_transformed_val))
cost = tf.reduce_mean(losses)
これを行うとエラーになります:
どうTypeError: List of Tensors when single Tensor expected
この問題を解決する必要がありますか? tf.reduce_mean()
はテンソル値のリストを取りますか、それともそれを取る特別なテンソルオブジェクトがありますか?
これは私が誤解しています。私は自分の答えを削除しました:)初心者の助けになるかもしれないので、あなたのポストのチュートリアルのコード例を表示したいと思うかもしれません(私も理解したいと思います)。 – Will
私が話していたコードはhttps://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/models/rnn/ptb/ptb_word_lm.py#139であり、入力に関する部分はその90行目ですファイル。そのファイルの行90のnum_stepsは、OPのコードのseq_lenと同じです(大まかに)。 __init__メソッド全体をインライン展開することを提案するか、ファイルへのリンクを提供するだけですか? –
ああ、わかりました、ええ、これは非常に大きな方法です。私はファイルへのリンクは、いくつかの関連する行と説明の小さなビットで、それが最も明確になると思う。あなたの投稿は素晴らしい出発点であるようですが、OPが正しい方法でやっていないコードの部分の「正しい例」を見ていると、私は思っています。 私が時には使う方法は、メソッド/クラス全体をペーストするだけですが、無関係な行を '#... 'に置き換えて短縮します。 – Will