tensorflow2.使用笔记

python + tensorflow谁用谁知道

0. 机器爱学习

目前,TensorFlow 和PyTorch 框架是业界使用最为广泛的两个深度学习框架,TensorFlow 是Google 于2015 年发布的深度学习框架,得益于Google 的影响力和发布时间早积累了大量开发者。同时在TensorFlow1.0 版本时期,Facebook 基于Torch 框架推出PyTorch ,接口设计精良,获得广泛好评,不过由于Facebook 隐私泄露问题,加上TensorFlow 2.0的发布,TensorFlow 的使用程度依然比PyTorch 广泛,所以P为辅主T技能。

1. Tensorflow环境

  • tensorflow+CUDA+cuDNN

    在安装tensorflow 之前需要安装NVIDIA 提供的GPU 加速库CUDA 程序和cuDNN 神经网络加速库,并配置Path环境变量。

    在windows10环境下,直接在环境里安装cpu和gpu版本两个版本即可,注意最好是相同的版本号。

    不过NVIDIA显卡驱动中是自带CUDA的,自行安装可能是直接调用API和间接调用的区别,如果遇到tensorflow+CUDA+cuDNN版本问题的报错,最快的解决办法是删除tensorflow和tensorflow-gpu,直接用conda安装。

    conda install tensorflow-gpu
    
  • 关于Could not create cudnn handle:之类的报错

    如果后面说的是dll文件找不到,这种情况就是版本不匹配造成的报错,对应的dll文件名字有变动,这些地方设计的不太好,重新下载对应版本就行,很浪费时间,但是没得选。

    如果是CUDNN_STATUS_ALLOC_FAILED,如下设置为仅在需要时申请显存即可。

    # 设置为仅在需要时申请显存
    # 限制GPU资源的使用,此处allow_growth=True是动态分配显存,需要多少,申请多少,不是一成不变、而是一直变化
    config = tf.compat.v1.ConfigProto(gpu_options=tf.compat.v1.GPUOptions(allow_growth=True))
    sess = tf.compat.v1.Session(config=config)
    
  • 在Linux环境下(ubuntu20.04)

    环境变量根目录下.bashrc文件:
    sudo gedit ~/.bashrc

    安装多版本cuda:

    # 查询CUDA版本号
    apt-cache madison cuda
    # 安装指定版本CUDA
    sudo apt-get install cuda=10.0.130-1
    # 修改环境变量即可
    

2. cpu和gpu的切换

tensorflow优先使用gpu版本,如果仅仅用tf做简单的处理(如最小二乘法拟合函数),cpu明显少调用些许文件,执行比gpu版本快,可用如下办法切换至cpu:

import os 
#下面这行注释掉就是使用gpu,不注释就是使用cpu
os.environ [ "CUDA_VISIBLE_DEVICES" ] = "-1"                                          

3.

问题:from tensorflow.contrib.layers import l2_regularizer, xavier_initializer ModuleNotFoundError: No module named 'tensorflow.contrib' 回答: 这个问题是因为在TensorFlow 2.0中,tensorflow.contrib模块被移除了。所以无法直接使用from tensorflow.contrib.layers导入l2_regularizer和xavier_initializer。在最新的TensorFlow版本中,你可以使用tf.keras模块中的相应函数来替代。例如,你可以使用tf.keras.regularizers.l2来替代l2_regularizer,使用tf.keras.initializers.glorot_uniform或tf.keras.initializers.glorot_normal来替代xavier_initializer。所以你可以将代码中的import语句修改为以下形式: from tensorflow.keras.regularizers import l2 from tensorflow.keras.initializers import GlorotUniform, GlorotNormal 然后在代码中使用l2()替代l2_regularizer(),使用GlorotUniform()或GlorotNormal()替代xavier_initializer_conv2d()。 这样修改后,你的代码将不再依赖于tensorflow.contrib模块,而是使用TensorFlow 2.0中的tf.keras模块中的函数。123 #### 引用[.reference_title] - *1* [tensorflow2.0 解决ModuleNotFoundError: No module named ‘tensorflow.contrib](https://blog.csdn.net/weixin_41194171/article/details/107813906)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* [tensorflow2.0 解决ModuleNotFoundError: No module named ‘tensorflow.contrib.layers import flatten](https://blog.csdn.net/weixin_41194171/article/details/107814532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *3* [tensorflow学习笔记二:在tensorflow中,加入l2_regularization](https://blog.csdn.net/sinat_38178263/article/details/82941266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值