1.win10 + CUDA 9.0 + cuDNN 7.0 + tensorflow源码编译安装
2.Tensorflow RNN、LSTM、GRU使用
win10 + CUDA 9.0 + cuDNN 7.0 + tensorflow源码编译安装
在配置个人深度学习主机后,安装必备软件环境成为首要任务。使用Anaconda5.0.0 python3.6版本管理Win python环境,新建基于python3.5的obs 源码分析tensorflow-gpu-py conda环境。直接使用conda安装tensorflow,会默认安装tensorflow-gpu 1.1.0并主动安装cudatoolkit8.0 + cudnn6.0。若需配置CUDA环境,需自行下载并安装cuda9.0 + cudnn7.0,配置环境变量。pip安装tensorflow,会默认安装最新版本tensorflow-gpu 1.3.0。配置不当导致import tensorflow时报错:'ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'。尝试源码编译tensorflow解决此问题。溯源码环节
查阅tensorflow官网文档,了解cmake window build tensorflow方法。文档中提到,tensorflow源代码目录下有详细网页介绍Windows环境编译方法,包含重要信息。发现安装tensorflow-gpu版本、配置CUDA8.0 + cuDNN6.0/cuDNN5.1或CUDA9.0 + cuDNN7.0时,import tensorflow时报错。查阅错误信息,网上解答提及需要配置正确的CUDA和cuDNN版本。然而,尝试安装和配置后依然报错。安装tensorflow cpu版本无问题,确认CUDA环境配置错误。波胆竞猜源码
决定源码编译tensorflow-gpu以解决问题。查阅文档,执行编译操作。在window环境下编译tensorflow源码,需要准备的软件包括Git、tensorflow源码、anaconda、swig、CMake、CUDA、cuDNN、Visual Studio 。在百度网盘下载相关软件。
配置过程中,类似梦行源码修改CMakeLists.txt以适应CUDA 9.0 + cuDNN 7.0。在cmake目录下新建build文件夹,执行命令配置tensorflow。配置后进行编译,遇到问题如:cudnnSetRNNDescriptor参数不匹配、网络访问问题、编码问题、protobuf库下载问题、zlib.h文件不存在、下载链接失败、无法解决的错误等。
为解决这些问题,采取相应措施,如修改cuda_dnn.cc文件、源码视频网网络代理设置、文件编码转换、忽略警告信息、多次尝试下载、修改cmake配置文件等。遇到无法解决的问题,如CUDA编译器问题、特定源代码文件问题,提交至github tensorflow进行讨论。
完成源码编译后,安装tensorflow-gpu并进行验证。在下一步中继续讨论验证过程和可能遇到的后续问题。整个编译过程耗时、复杂,需要耐心和细心,希望未来能有官方解决方案以简化编译过程。
Tensorflow RNN、LSTM、GRU使用
在Tensorflow2.0中,循环神经网络(RNN)、长短时记忆(LSTM)和门控循环单元(GRU)的实现变得更为简便,主要依赖于Keras模块。本文将基于Tensorflow官方文档,详细解析Tensorflow2.0中对于循环神经网络的实现方式,并介绍如何构建常见的双向循环神经网络。文章将分为四大部分来展开:
**一、循环神经网络基类
**循环神经网络的基类为所有实现(RNN、GRU、LSTM)的母类,它提供了构建RNN的基础框架,需要cell类作为输入。此基类接口包括但不限于以下参数:`cell`、`return_sequences`、`return_state`、`go_backwards`、`stateful`和`unroll`。
**二、循环神经网络cell类
**cell类实现了单次输入到输出的循环神经网络结构,没有进行循环传递。RNNCell类提供了核心接口,而LSTMCell和GRUCell则分别对应LSTM和GRU模型,提供了各自的接口。
**三、循环神经网络完整实现类
**在实际应用中,RNN、LSTM和GRU的实现类似,主要区别在于参数设置和输出方式。对于RNN模型,定义接口时需考虑`cell`、`return_sequences`、`return_state`等参数。以LSTM模型为例,其接口包括`input_shape`、`return_sequences`、`return_state`等参数,并提供具体的使用示例。GRU模型的接口和LSTM相似,但在具体实现和参数使用上有细微差异。
**四、双向循环神经网络实现
**为了增强模型的表示能力,双向循环神经网络(Bidirectional RNNs)成为了常用的技术。Tensorflow提供了`tf.keras.layers.Bidirectional`包装器,简化了构建双向RNN的步骤。其接口参数主要关注如何构建前向和后向RNN,并提供相应的使用示例。
综上所述,Tensorflow2.0为构建复杂的循环神经网络模型提供了强大的框架支持,包括基础的RNN、LSTM和GRU模型实现,以及便捷的双向RNN结构。通过正确使用这些API,开发者可以构建出高效、灵活的序列处理模型,解决各种序列数据相关的任务。