小编Han*_*Guo的帖子

如何在tensorflow中使用tf.while_loop()

这是一个普遍的问题.我发现在张量流中,在我们构建图形之后,将数据提取到图形中,图形的输出是张量.但在许多情况下,我们需要根据此输出(即a tensor)进行一些计算,这在tensorflow中是不允许的.

例如,我正在尝试实现RNN,它基于数据自身属性循环时间.也就是说,我需要使用a tensor来判断是否应该停止(我不使用dynamic_rnn,因为在我的设计中,rnn是高度自定义的).我发现tf.while_loop(cond,body.....)可能是我实施的候选人.但官方教程太简单了.我不知道如何在'body'中添加更多功能.谁能给我一些更复杂的例子?

此外,在这种情况下,如果将来的计算基于张量输出(例如:基于输出标准的RNN停止),这是非常常见的情况.是否有优雅的方式或更好的方式而不是动态图?

python tensorflow

32
推荐指数
1
解决办法
3万
查看次数

如何在tensorflow中检测哪个变量是'nonetype'

我正在使用TensorFlow创建一个新模型,其中包括一个动态循环.我使用tf.while_loop来实现这个实例.我遇到的一个问题是:

AttributeError: 'NoneType' object has no attribute 'back_prop'

这样做就出现了

gradients = tf.gradients(self.loss, params)
Run Code Online (Sandbox Code Playgroud)

然后,我尝试打印所有params,结果每个参数都有一个形状.我想如果有一个nonetype参数,它的形状应该也None一样吗?另一方面,有没有其他方法可以帮助我检测哪个变量未分配或类似[]

这是完整的引用:

  Traceback (most recent call last):
  File "main.py", line 125, in <module>
    tf.app.run()
  File "/usr/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 30, in run
    sys.exit(main(sys.argv))
  File "main.py", line 119, in main
    train()# if FLAGS.train:
  File "main.py", line 95, in train
    model = create_model(sess, False)
  File "main.py", line 75, in create_model
    forward_only=False)
  File "/home/sniu/lab/ai_lab/DMN-tensorflow/models/DMN.py", line 248, in __init__
    gradients = tf.gradients(self.loss, params)
  File "/usr/lib/python2.7/site-packages/tensorflow/python/ops/gradients.py", …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

6
推荐指数
1
解决办法
2855
查看次数

为什么没有人使用Hopfield网络进行MNIST?

我目前正在修补Hopfield网络,这是一个非常有趣的神经网络.我也在为Hopfield网编写我自己的代码以识别MNIST数字,但它无法正常工作,所以我尝试在线搜索.令人惊讶的是,我几乎找不到与MNIST数字和Hopfield网络相关的任何内容.谁能告诉我原因?

machine-learning

5
推荐指数
1
解决办法
512
查看次数

使用tf.while_loop()将TensorFlow插入无限循环

重现步骤

我正在使用TensorFlow来实现需要使用的网络 tf.while_loop()

import tensorflow as tf
import numpy as np
class model(object):
    def __init__(self):
        self.argmax_ep_gate_array = [ tf.placeholder(tf.int32, [None]) for _ in range(10)]
        argmax_ep_gate_array_concat = tf.concat(0, self.argmax_ep_gate_array)
        story_len = tf.constant(7)
        starter = tf.constant(0)
        z = []
        def body(hops):
            hops = tf.add(hops,1)
            z.append(hops)
            return hops
        def condition(hops):
            return tf.logical_and(tf.less(tf.gather(argmax_ep_gate_array_concat, hops),story_len),tf.less(hops,tf.constant(20)))

        self.gate_index = tf.while_loop(condition,body,[starter])
        self.z=tf.concat(0,z)

    def step(self, sess):
        feed={}
        for i in range(10):
            feed[self.argmax_ep_gate_array[i].name]=[i]
        print (sess.run([self.gate_index,self.z],feed))
with tf.Session() as sess:
    while_loop = model()
    sess.run(tf.initialize_all_variables())
    while_loop.step(sess)
Run Code Online (Sandbox Code Playgroud)

你有什么尝试?

我发现如果我想sess.run()body()中没有返回的任何变量,tensorflow会陷入无限循环.上面的例子是微不足道的,但它揭示了一些东西.在现实情况下,我使用的tf.while_loop()运行RNN包括Y = WX …

python tensorflow

2
推荐指数
1
解决办法
2272
查看次数

标签 统计

python ×3

tensorflow ×3

machine-learning ×1