[英]Tensorflow tf.data.Dataset convert string tensor to float tensor
[英]How to use SessionRunHook to print tensor with tf.data.Dataset API?
我正在使用 tf.data.Dataset API 并为传递给Dataset.map
的闭包中的操作分配名称,如下所示
import tensorflow as tf
def model_fn(features, mode):
loss = tf.constant(1)
train_op = tf.no_op()
return tf.estimator.EstimatorSpec(mode=mode, loss=loss, train_op=train_op)
def input_fn():
dataset = tf.data.Dataset \
.from_generator(lambda: (x*x for x in range(10)), tf.int32) \
.map(lambda x: tf.identity(x, name='tokens_inside'))
ret = dataset.make_one_shot_iterator().get_next()
tf.identity(ret, 'tokens_outside')
return ret
tf.logging.set_verbosity(tf.logging.INFO)
hooks = [
tf.train.LoggingTensorHook(['tokens_outside'], every_n_iter=1),
tf.train.LoggingTensorHook(['tokens_inside'], every_n_iter=1),
]
est = tf.estimator.Estimator(model_fn=model_fn, model_dir='mout')
est.train(input_fn=input_fn, hooks=hooks, max_steps=1)
当使用tf.train.LoggingTensorHook
转储一些值时,第二个钩子会引发异常:
我收到这样的错误:
KeyError: "The name 'tokens_inside:0' refers to a Tensor which does not exist. The operation, 'tokens_inside', does not exist in the graph."
我猜Dataset
操作会为每个函数创建一个新图? 有没有办法自定义tf.train.LoggingTensorHook
以便它知道要搜索哪个图来搜索命名张量?
在回调函数中使用 tf.add_to_collection(name, your_input) 和 get_collection(name)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.