代码之家  ›  专栏  ›  技术社区  ›  DocDriven

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

  •  0
  • DocDriven  · 技术社区  · 6 年前

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

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

    请帮我拿这个!谢谢您!

    1 回复  |  直到 6 年前
        1
  •  1
  •   P-Gn    6 年前
    • x x.name
    • x = tf.identity(x, name='my_name')

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

    • here Dataset