0
私はこの質問が前に投稿されていますが、回答を見て知っている私はこれを行う方法を理解することはできません。テンソルフローのseq2seq埋め込み(テンソルフローチュートリアルの翻訳例)で、エンコーダ入力に事前訓練されたベクトルを使用したいと思います。 私はそれが次のコードを使用して埋め込みを開始core_rnn_cell_imp.pyファイルに知っている:Pretrained word2vecでSeq2seqを埋め込む
embedding = vs.get_variable(
"embedding", [self._embedding_classes, self._embedding_size],
initializer=initializer,
dtype=data_type)
しかし、どのように私は、配列Xと、この埋め込みを上書きすることができます。
X = np.ndarray(shape=(20,10), dtype='f') # lets say I want to replace the embedding with this pretrained array
with tf.variable_scope("embedding_rnn_seq2seq"):
with tf.variable_scope("embedding_wrapper"):
sess.run(tf.assign(embedding, X))
私がモデルを作成した後、私は上記のコードをトレーニングの直前に実行したところ、次のエラーが表示されます。
global name 'embedding' is not defined
この問題を修正するにはどうすればよいですか?申し訳ありませんが、私はテンソルフローが初めてです。
新しいコードを追加したのと同じPython関数で 'embedding'が定義されていますか? – mrry
@mrry - そうではありません。これが私がこのエラーに遭う理由ですか? – user1512681
はい、変数名が同じスコープで定義されていないため、Pythonエラーです。 'embedding'の値をあなたが使用しようとしているポイントに渡すための何らかの方法を見つける必要があります。 – mrry