在 tensorflow 2 中导入 tensorflow 模块很慢
Posted
技术标签:
【中文标题】在 tensorflow 2 中导入 tensorflow 模块很慢【英文标题】:Import tensorflow module is slow in tensorflow 2 【发布时间】:2020-04-12 03:17:31 【问题描述】:相关:Import TensorFlow contrib module is slow in TensorFlow 1.2.1 也:What can cause the TensorFlow import to be so slow?
我正在使用 ssd 并导入 TensorFlow。我有 4 ghz 8 核 pc 和 16 gb 内存(处理器 AMD FX(tm)-8350 八核处理器,4000 Mhz,4 核,8 逻辑处理器)。 TensorFlow 导入需要 10-12 秒。
有什么方法可以选择性地导入 TensorFlow 的一部分?
RAM 磁盘有帮助吗?
还有没有更多的工作正在做这样的事情或:Slow to import tensorflow.contrib with Python 3 because inspect.stack is slow #11829?
编辑:Windows 8.1 上的 Python 3.6.8 :: Anaconda, Inc.。 Dos box、cygwin bash 的速度慢到 12 秒。 Vs code bash/power shell 最快为 8 秒。 在 .py 文件中导入,例如: import tensorflow as tf. 不确定是什么环境。
编辑 2:
PS D:\ray\dev\ml\ss1> conda info --envs
# conda environments:
#
base * D:\Anaconda3
first D:\Anaconda3\envs\first
d:\Anaconda3
first d:\Anaconda3\envs\first
编辑 3:使用下面的代码,我在命令提示符下得到 9-10 秒:
(tf2) D:\ray\dev\ml\ss1>python timeimport.py
import tensorflow: 1 units, 9.796 seconds. 0.1 units/second.
version: 2.0.0
(tf2) D:\ray\dev\ml\ss1>python timeimport.py
import tensorflow: 1 units, 9.448 seconds. 0.11 units/second.
version: 2.0.0
(tf2) D:\ray\dev\ml\ss1>python timeimport.py
import tensorflow: 1 units, 9.421 seconds. 0.11 units/second.
version: 2.0.0
from __future__ import absolute_import, division, print_function, unicode_literals
from contextlib import contextmanager
from timeit import default_timer as timer
@contextmanager
def timing(description: str,units=1,title="",before="") -> None:
if before!="":
print(before,flush=True)
start = timer()
yield
dt = timer() - start
frequency=0 if units is None else (units/dt)
if units is None:
if title is None: print(f"description: dt seconds.",flush=True)
else: print(f"title description: dt seconds.",flush=True)
else:
#"0:.2f".format(a)
dt=round(dt,3)
frequency=round(frequency,2)
print(f"title description: str(units) units, dt seconds. str(frequency) units/second.",flush=True)
return dt
with timing("import tensorflow",1):
import tensorflow as tf
print("version:",tf.__version__)
编辑 4:打开 Windows degender,我得到 8-9 秒而不是 9-10 秒。
编辑 5:我找到了解决方法:
制作一个笔记本:
import tensorflow as tf
print(tf.__version__)
import tensorflow_datasets as tfds
import code.py
然后在你的 code.py 中:
print("enter imported code")
import tensorflow as tf
print(tf.__version__)
# !pip install -q tensorflow-datasets
import tensorflow_datasets as tfds
import matplotlib.pyplot as plt
import numpy as np
#tfds.list_builders()
ds = tfds.load('mnist', split='train', shuffle_files=True)
...
所以你运行笔记本一次,它需要 10 秒。下一次就顺风顺水了。
【问题讨论】:
对于我的 linux 机器,第一次导入总是很慢,但是任何后续的导入(即跨不同的 Python CLI 实例)都是立即的。您是否也观察到了类似的行为? 我打瞌睡。请参阅编辑 3。 您可以尝试再次禁用 Windows Defender 和任何其他防病毒软件和基准测试吗?另外,您使用的是 windows susbsistem for linux (WSL) 吗? win 8.1 - afaik,我没有使用任何 Windows 子系统。 我找到了解决方法,请参阅编辑 5。 【参考方案1】:我想首先说我使用的是 3 Ghz 四核,并且在 Python 中导入 TensorFlow 几乎不需要十秒钟。您能否详细说明您在导入它时遇到的问题(即终端/控制台/命令提示符/Anaconda 等中的 Windows/Mac/Linux)? 您没有指定如何尝试导入 Tensorflow,但考虑到您使用 python-3.x 对其进行了标记,我假设您正在使用 Python 导入 Tensorflow。我确信这不会是一个流行的答案,但也许可以考虑将 Tensorflow 与 c++ 之类的编译语言一起使用。众所周知,Python 等解释型语言比编译型语言慢得多,如果速度至关重要,那么在其原生语言中使用 TensorFlow 似乎是显而易见的。
【讨论】:
【参考方案2】:当我从办公室的 Thinkpad T560(集成 GPU 的 i7 6600U)导入 tensorflow 时,需要 10 多秒(约 15 秒)。 但最近我在家里买了一台新的笔记本电脑联想 Y7000(i7 10750H 和 GTX 1650 卡,三星 SSD),我安装了 CUDA 依赖项并能够成功运行 TensorFlow 和 CUDA。
我想说,我现在感觉自己从一辆旧马车换成了一辆子弹头列车。
【讨论】:
nice cpu,你的 CPU 比我的好两倍:cpubenchmark.net/compare/… - 我最近设法再次安装了 tf 2 (2.1.0),但导入 ***.com/questions/62376660/… 仍然需要 10 秒以上是关于在 tensorflow 2 中导入 tensorflow 模块很慢的主要内容,如果未能解决你的问题,请参考以下文章
无法在 PyCharm 2019.2 中导入 Keras(来自 TensorFlow 2.0)
无法在 Swift Playground 中导入 tensorflow