使用输入管道访问图形中的输入变量

2024-09-30 23:32:31 发布

您现在位置:Python中文网/ 问答频道 /正文

假设有一个模型被定义为这样的类:

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函数的部分)

请帮我拿这个!谢谢你


Tags: 模型buildselfinputmodel管道initlayers
1条回答
网友
1楼 · 发布于 2024-09-30 23:32:31
  • 你可以用x.name得到x的名字
  • 或者,您可以使用x = tf.identity(x, name='my_name')x重命名为您喜欢的名称

    (使用这两种解决方案,即使x不是占位符,也可以用张量的名称来输入值:

    sess.run(my_ops, feed_dict{tensor_name: tensor_value})
    

  • 或者,您可以用占位符替换整个输入管道(针对相反的问题解释了here——用Dataset输入替换占位符)

相关问题 更多 >