我正在尝试在张量流r1.5中通过DNNClassifier实现DQN。现在我需要实现目标网和评估网之间的变量交换,但我既可以找到从tf.Estimator
检索变量也不能为另一个估算器赋值的方法。
我知道我可以通过tf.estimator.get_variable_value(name)
获取值,但是没有分配值的函数。我认为为变量赋值的唯一方法是tf.assign
。但是,此函数需要引用Variable Tensor,如果您手动构建图形,则可以tf.trainable_variables
或tf.Graph.get_collection
获取。
我尝试在tf.trainable_variables
之后调用estimator.train
,但获得了一个空列表。这是我的代码(数据只是一些随机值):
import tensorflow as tf
tf.logging.set_verbosity(tf.logging.INFO)
x = {"x": [1, 13, 26, 37, 47, 67, 49]}
y = [1, 1, 0, 1, 1, 1, 1]
my_feature_columns = [tf.feature_column.numeric_column(key="x")]
def my_input_fn():
dataset = tf.data.Dataset.from_tensor_slices((x, y))
return dataset.shuffle(100).repeat().batch(3).make_one_shot_iterator().get_next()
classifier = tf.estimator.DNNClassifier(
feature_columns=my_feature_columns,
hidden_units=[10],
n_classes=2)
classifier.train(input_fn=my_input_fn, steps=500)
print(tf.trainable_variables()
有没有办法做这样的工作?