4
テンソルフローでDefunデコレータを使用する際に問題があります。つまり、Defunは外部で作成されたTF操作をクローズすることはできません。以下は、私が何をしたいのかを示す自己完結型の例です。テンソルxは、custom_opの呼び出しの内側と外側の異なるグラフに属することに注意してください。 Defunコードは、一時的なグラフを作成し、グラフを関数protoに変換し、元のグラフにマージします。最初のステップでコードがクラッシュします。これは、閉じたテンソルが新しい一時グラフにないためです。これを回避する方法はありますか?物事を終えることができれば、非常に役に立ちます。テンソルフローデフンを閉鎖として扱う
import tensorflow as tf
from tensorflow.python.framework import function
w = tf.Variable(1.0)
function_factory = lambda x: x*w
@function.Defun(x=tf.float32)
def custom_op(x):
print('graph for x inside custom_op: ', x.graph)
return function_factory(x)
x = tf.constant(2.0)
print('graph for x outside custom_op: ', x.graph)
y = custom_op(x)
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
sess.run(y)