2016-04-04 3 views
2

私がモデルしている:モデルがでTensorflowでランタイムに1つのテンソルを表示または保存するにはどうすればよいですか?

def __init__(params): 
    seq2seq() { 
     outputs, states = rnn.rnn(...) 
    } 

def step() 
    ... 
    session.run(output_feed, input_feed) 

と呼ばれている:

with tf.Session as sess: 
    model = create_model(sess) (does __init__, loads checkpoint) 
    inputs = ... 
    outputs = model.step(sess, inputs) 

どのように私は、 "状態" はrnn.rnn(によって返され、あるものを見る/保存/印刷することができますか)?

私はテンソルの形状を与えるtf.Print(状態[-1]、[状態[-1]])を試しました。

Tensor("model/seq2seq/Print:0", shape=TensorShape([Dimension(None), Dimension(4096)]), dtype=float32) 

私が試みた状態[-1]のようなエラーの一連提供.eval():

Compute status: Invalid argument: 
    You must feed a value for placeholder tensor 'encoder1' with dtype int32 

私はまた、それを返すためにモデルにVARを追加しようとしているが、しかしそれは動作しませんでした:

def __init__(): 
    ... 
    self.state = state 

def step(): 
    output_feed.append(self.state) 
    result = session.run(output_feed, input_feed) 
    return result 

答えて

1

あなたがグラフ内の任意のプレースホルダへの依存性を持つことができませんevalメソッドにおけるテンソルの値を参照するために。この場合、states[-1]'encoder1'に依存しているというエラーメッセージが表示されます。

あなたはそうのようなプレースホルダの値にseesion.runとフィードを呼び出すことができます。encoder1は、プレースホルダオブジェクトである

session.run(states[-1], feed_dict={encoder1:[#values for encoder1 here 
              ]}) 

。これにより、states[-1]という値が返されます。この値をシリアル化して保存することができます。あなたがそれを実行している状況で変数の値を取得するには

_, state_values = session.run([output_feed, states[-1]], input_feed) 

:あなたの特定のケースencoder1

はそうあなたのような何かを実行したい場合がありますrnn内の内部のプレースホルダかもしれません。

+0

図のように単にsession.runを使用してください。 –

+0

無効な引数のリストは〜40個の長さです。「encoder1」はスタックトレースだけを参照しています。 – user2827214

+0

答えを編集しましたが、それは機能しますか? –

関連する問題