2017-11-13 8 views
0

intputを構築した後、それをテザーに変更する必要があります。簡略化された例:x(constant=42.0),s(x^2)およびx_new(constant=4.0)を使用してください。テンソルでOPへの入力を変更するには

sへの入力をxからx_newに変更したいとします。この操作を実行した後、私はtf.contrib.graph_editor.reroute_inputsを使用して試してみたが、私の人生のために、私はそれを返す部分グラフをどうするかを把握することはできませんs.eval() == 16.0

x = tf.constant(42.0, name='x') 
s = tf.square(x, name='s') 
x_new = tf.constant(4.0, name='x_new') 

tf.get_default_graph().as_graph_def() 

Out[6]: 
node { 
    name: "x" 
    op: "Const" 
    attr { 
    key: "dtype" 
    value { 
     type: DT_FLOAT 
    } 
    } 
    attr { 
    key: "value" 
    value { 
     tensor { 
     dtype: DT_FLOAT 
     tensor_shape { 
     } 
     float_val: 42.0 
     } 
    } 
    } 
} 
node { 
    name: "s" 
    op: "Square" 
    input: "x" 
    attr { 
    key: "T" 
    value { 
     type: DT_FLOAT 
    } 
    } 
} 
node { 
    name: "x_new" 
    op: "Const" 
    attr { 
    key: "dtype" 
    value { 
     type: DT_FLOAT 
    } 
    } 
    attr { 
    key: "value" 
    value { 
     tensor { 
     dtype: DT_FLOAT 
     tensor_shape { 
     } 
     float_val: 4.0 
     } 
    } 
    } 
} 
versions { 
    producer: 24 
} 

を期待しています。

私もtf.import_graph_defで遊んで試してみたとして漠然とこのGitの問題(https://github.com/tensorflow/tensorflow/issues/1758)で説明したが、関係なく、私はそれをしようとどのように多くの方法で、私はsx_newxからintputsを変更するために取得しません。

これらのアプローチのいずれかを使用して、この簡単な例を達成する方法を知っていますか?

答えて

0

定数の代わりにプレースホルダを使用できます。例えば

:この簡単な例で

import tensorflow as tf 

x = tf.placeholder(tf.int32, shape=[]) 
s = tf.square(x) 

with tf.Session() as sess: 
    print(s.eval({x: 5})) 
    print(s.eval({x: 4})) 
+0

、確かに、私は既存のモデルをインポートしていると私が働いている他のモデルとすることを組み合わせます。他のモデルを操作して、期待される入力を、入力パイプラインから来るように変更しようとするのはかなり醜いハックです。そのため、元のモデルのコードを変更するのではなく、実際にOPへの入力を実際に変更する必要があります。 –

関連する問題