TensorFlow使用篇
以前在台式机上面写的代码,现在在自己的笔记本上面用不了了,出现了几个问题,才发现是自己笔记本的GPU低了,然后陆陆续续报了一些错误,以我以前写的一个LSTM代码为例,重新走一遍修改代码的道路吧。 1、第一个报错是“ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败。”这样子的错误,实际上是运行不了TensorFlow,后面将TensorFlow的版本降低到1.5,同时使用命令“pip install tensorflow-gpu==1.5”安装了适合的TensorFlow运行的配置,这一步或可略过! 2、第二个是之前的代码中,TensorFlow(2.0以上的版本)将keras里面的功能都集成到TensorFlow中,然而老版本并没有。 之前的:
from tensorflow.keras.layers import Dense, Embedding, LSTM
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Flatten, Dropout
修改后的:
from keras.layers import Dense, Embedding
from keras.models import Sequential
from keras.layers import Dropout
3、运行的时候可能会遇到:
FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
这是numpy的版本太高导致的,因此可以降低一下numpy的版本,如命令“pip install numpy==1.16.4” 4、在能够运行的情况下,其他问题都不大,与之前版本修改的相比,一些函数名或者参数有个别小小的调整,在这里我碰到了两个,顺便提一下吧。
- 为了将结果复现,我们还需要设置一个随机数种子,2.0版本的是
tf.random.set_seed(123)
而低版本tf是
tf.set_random_seed(123)
- 在最后函数精度验证的时候,新版本的是‘accuracy’、‘val_accuracy’、‘loss’、‘val_loss’,老版本前面两个参数不同“acc”和‘val_acc’
最后分享一下我LSTM任务的结果:
|