导入tflearn非常慢

时间:2018-06-27 11:29:55

标签: python tensorflow tflearn

与其他模块相比,导入tflearn需要花费大量时间。

在新创建的虚拟环境中,该环境仅通过pip安装了tflearn并具有最小的依赖关系:

  • import numpy as np大约需要0.18s
  • import tensorflow as tf大约需要0.90s
  • import tflearn大约需要3.1秒的时间(并要求我安装h5py和scipy)。

按照建议安装h5py和scipy之后,import tflearn消耗的时间最多达到3.5s。如何减少导入时间?

(以上所有测试都是通过将语句放入test.py并运行time python test.py多次来完成的。报告的时间是time内置的bash报告的“实际”时间。)< / p>

2 个答案:

答案 0 :(得分:2)

简短答案

在Jupyter或其他具有长期解释程序会话的工作中进行初始工作,因此您不需要等待太多的导入工作。

长答案

您可以使用python -v来跟踪导入。我从apt安装了moreutils,在tensorflow原始Docker容器中安装了tflearn的{​​{1}}和pip

python:3.6-stretch

很明显,导入root@10e4bcd91377:/# python -v -c 'import tensorflow' 2>&1 | ts '%H:%M:%.S' | grep 'import ' | wc -l 954 root@10e4bcd91377:/# python -v -c 'import tflearn' 2>&1 | ts '%H:%M:%.S' | grep 'import ' | wc -l 1768 会导入很多软件包。 哪一个?

tflearn

我将保留831行输出,但是看起来# python -v -c 'import tflearn' 2>&1 | grep 'import ' | cut -f1 -d# | sort | uniq > tflearn-imports.txt # python -v -c 'import tensorflow' 2>&1 | grep 'import ' | cut -f1 -d# | sort | uniq > tensorflow-imports.txt # diff --suppress-common-lines tensorflow-imports.txt tflearn-imports.txt 导入了tflearn的所有内容,这花费了相当长的时间,并且导入tensorflow.contrib本身并没有什么作用。有了这些信息,我们可以查看原始的tensorflow输出–看起来python -v -c 'import tflearn' 2>&1是导入tflearn.variables ...的模块……

tensorflow.contrib

this from tensorflow.contrib.framework.python.ops import add_arg_scope as contrib_add_arg_scope statement吗?让我们找出...

# <snip>
import 'tensorflow.contrib.summary.summary'
import 'tensorflow.contrib'
import 'tflearn.variables'
import 'tflearn.config'
# <snip>

Ayup,看起来像它!由于Python导入的工作方式,导入子模块必须评估整个程序包,并且由于# time python -v -c 'from tensorflow.contrib.framework.python.ops import add_arg_scope as contrib_add_arg_scope' 2>&1 | grep 'import ' | wc -l 1727 real 0m4.010s user 0m3.820s sys 0m0.410s root@10e4bcd91377:/# 不使用Tensorflow's Python lazy loader (which does mention contrib),因此需要一段时间。

(这里在模块中曾经有过关于供应商的讨论,但这是不相关的,因为:)

不幸的是,tensorflow.contrib中还有其他地方也从tflearn导入了点点滴滴,因此清除这种依赖关系没有多大帮助。

答案 1 :(得分:0)

有些导入的模块在开始使用它们时会初始化,有些则不会。导入时tflearn的初始化,由于它具有很多依赖性,因此花费这么多时间也就不足为奇了。

下面的SO QA将为您提供长时间的优化想法。

improving speed of Python module import

祝你好运