假设有一个模型被定义为这样的类:
class SimpleAutoencoder(object):
def __init__(self, x):
self.x = x
self.input_dim = 92
self.latent_dim = 10
self.build_model()
def build_model(self):
latent = tf.contrib.layers.fully_connected(self.x,
self.latent_dim,
scope='latent',
activation_fn=tf.nn.relu)
self.x_hat = tf.contrib.layers.fully_connected(latent,
self.input_dim,
scope='output',
activation_fn=tf.nn.sigmoid)
self.loss = tf.losses.mean_squared_error(self.x, self.x_hat)
self.train_op = tf.AdamOptimizer().minimize(self.loss)
您可以使用输入管道对其进行训练,以提供数据:
...
x = iterator.get_next()
model = SimpleAutoencoder(x)
...
## train and save it to disk
现在,在构建模型时为self.x
使用占位符时,我可以给它一个名称,并在恢复模型进行推理时轻松访问输入变量。但是对于输入管道,x
不是变量、常量或占位符,因此我不能给它一个正确的名称如何将新数据注入x
并通过图形传送?
尽管培训有效,但我认为我可能会以某种方式出错,因为代码在我看来非常难看(将管道输出提供给init函数的部分)
请帮我拿这个!谢谢你
x.name
得到x
的名字或者,您可以使用
x = tf.identity(x, name='my_name')
将x
重命名为您喜欢的名称(使用这两种解决方案,即使
x
不是占位符,也可以用张量的名称来输入值:)
或者,您可以用占位符替换整个输入管道(针对相反的问题解释了here——用
Dataset
输入替换占位符)相关问题 更多 >
编程相关推荐