小编Da *_*ong的帖子

为什么python 2.7定义没有继承对象的类会不会有__mro__方法?

我正在使用python 2.7.9在Mac OS X Yosemite上工作.

这是我尝试过的:

  1. 定义一个类

    class A:
        def test(self):
            print "test"
    
    Run Code Online (Sandbox Code Playgroud)

    然后运行

    A.__mro__
    
    Run Code Online (Sandbox Code Playgroud)

    然后我得到了

    >>> A.__mro__
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: class A has no attribute '__mro__'
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后我定义

    class B(object):
        def test(self):
            print "test"
    
    Run Code Online (Sandbox Code Playgroud)

    然后运行

    B.__mro__
    
    Run Code Online (Sandbox Code Playgroud)

    然后我得到了

    >>> B.__mro__
    (<class '__main__.B'>, <type 'object'>)
    
    Run Code Online (Sandbox Code Playgroud)

这两个定义有什么不同?我发现在python 3中,没有"对象"的版本仍然有__mro__方法.

python

10
推荐指数
1
解决办法
2455
查看次数

使用汇总操作训练TensorFlow模型比没有汇总操作要慢得多

我使用TensorFlow r1.0和GPU Nvidia Titan X训练一个类似Inception的模型.

我添加了一些摘要操作来可视化训练过程,使用如下代码:

def variable_summaries(var):
"""Attach a lot of summaries to a Tensor (for TensorBoard visualization)."""
    with tf.name_scope('summaries'):
        mean = tf.reduce_mean(var)
        tf.summary.scalar('mean', mean)
        with tf.name_scope('stddev'):
            stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
        tf.summary.scalar('stddev', stddev)
        tf.summary.scalar('max', tf.reduce_max(var))
        tf.summary.scalar('min', tf.reduce_min(var))
        tf.summary.histogram('histogram', var)
Run Code Online (Sandbox Code Playgroud)

当我运行这些操作时,训练一个纪元的时间成本约为400秒.但是当我关闭这些操作时,训练一个纪元的时间成本仅为90秒.

如何优化图表以最小化汇总操作时间成本?

tensorflow tensorboard nvidia-titan

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

如何使用TensorFlow阅读器和队列同时读取两个文件?

我的训练集包含两种文件:训练图像,文件名如"1.png",标签文件,名称如"1.label.txt".

我在教程中发现了一些Queue和Reader的用法,如下所示:

filename_queue = tf.train.string_input_producer(filenames)
result.key, value = reader.read(filename_queue)
Run Code Online (Sandbox Code Playgroud)

但是,因为我的训练集包含两种文件,一种对应一种.我怎样才能像上面的代码一样使用Queue和Reader?


编辑

我正在考虑使用一个包含基本名称的队列来提供给另外两个队列,分别是图像和标签.像这样的代码:

with tf.Session() as sess:
  base_name_queue = tf.train.string_input_producer(['image_names'], num_epochs=20)
  base_name = base_name_queue.dequeue()
  image_name = base_name + ".png"
  image_name_queue = data_flow_ops.FIFOQueue(32, image_name.dtype.base_dtype)
  image_name_queue.enqueue([image_name])
  x = image_name_queue.dequeue()
  print_op = tf.Print(image_name, [image_name])

  qr = tf.train.QueueRunner(base_name_queue, [base_name_queue] * 4)
  coord = tf.train.Coordinator()
  enqueue_threads = qr.create_threads(sess, coord=coord, start=True)

  for step in range(1000000):
    if coord.should_stop():
      break
    print(sess.run(print_op))

  coord.request_stop()
  coord.join(enqueue_threads)
Run Code Online (Sandbox Code Playgroud)

但是运行此代码会导致错误:

TypeError:Fetch参数有无效类型,必须是字符串或Tensor.(无法将FIFOQueue转换为Tensor或Operation.)

并且错误指向此行:

coord.join(enqueue_threads)
Run Code Online (Sandbox Code Playgroud)

我想我必须误解TensorFlow队列的工作原理.

python tensorflow

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

标签 统计

python ×2

tensorflow ×2

nvidia-titan ×1

tensorboard ×1