Tensorflow训练代码1.x接口自动升级2.x踩坑记录

这篇具有很好参考价值的文章主要介绍了Tensorflow训练代码1.x接口自动升级2.x踩坑记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Tensorflow训练代码1.x接口自动升级2.x踩坑记录

一起学AI系列博客:目录索引

本文小结Tensorflow训练代码1.x接口自动升级2.x踩坑过程和问题解决的方法。

TF准备工作


Tensorflow环境准备

  • 前提已安装好Anaconda/Spyder/Tensorflow,步骤略
  • 从spyder进入tensorflow环境,具体方法见:link
  • 核心步骤:
    • Anaconda prompt命令窗下:
      • activate tensorflow
      • Spyder
    • Spyder界面右侧IPython对话窗:
      • import tensorflow as tf,如无报错则表明环境进入成功

MNIST数据集准备

于官网下载数据集文件4个,相对py代码,将其放在../MNIST目录下。

环境问题解决


以下为跑基线代码时遇到的问题记录。

版本环境:

  • Anaconda:2.0.3
  • Tensorflow:2.9.1
  • Python:3.8
  • Spyder:5.4.3

报错解决:ModuleNotFoundError: No module named tensorflow_datasets’

  • 下载examples/turials目录拷贝至本地tensorlow路径,具体方法见:link。

报错解决:AttributeError: module ‘tensorflow’ has no attribute ‘placeholder’

  • tf句柄替换为兼容v1的版本句柄,参见链接:link1,link2

报错解决:RuntimeError: tf.placeholder() is not compatible with eager execution.

  • 在使用placeholder前,添加语句:tf.compat.v1.disable_eager_execution(),具体原因见:link1,link2

接着又报:AttributeError: module ‘tensorflow._api.v2.train’ has no attribute ‘exponential_decay’,发现一个个换不是个办法。

而究其核心原因:该代码版本为1.x 环境tf接口,tf2.0相对而言许多接口已无法直接调用,需要兼容适配。

所以接下来有两种解决方案

  1. 现有环境降级,Python和TF动
  2. 现有代码升级,代码替换,找自动化工具,自动完成TF接口迁移替换

显然第一种因噎废食成本较大,优选第二种方式。

自动升级脚本,从TF1.0调通到TF2.0

首先,查看Tensorflow官网有介绍升级脚本工具和EXE,见:link。具体使用可参考:网友总结方法。

其次,梳理下使用时遇到的报错:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xad in position 175: illegal multibyte sequence,且用tf_upgrade_v2.exetf_upgrade_v2_main.py脚本运行时都报错。

分析确认py脚本都是utf8编码无gbk,说明升级脚本里默认没按utf8编码,于是修改源码,将路径C:\ProgramData\Anaconda3\Lib\site-packages\tensorflow\tools\compatibility下的ast_edits.py中:

  • with open(in_filename, "r") as in_file, \
  • 替换为
  • with open(in_filename, "r", encoding='utf-8') as in_file, \

成功使训练代码从tf1.x升级tf2.x,本地升级脚本,运行指令举例:
tf_upgrade_v2_main.py --infile D:\test\d3_1_ref.py --outfile D:\test\d3_1_v2.py

最后,还要注意代码转换时,内部注释#不要和中文连在一起,要用空格隔开,否则存在编码异常,报gbk cant encode。文章来源地址https://www.toymoban.com/news/detail-492836.html

到了这里,关于Tensorflow训练代码1.x接口自动升级2.x踩坑记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot升级过程中踩坑定位分析记录 | 京东云技术团队

    作者:京东零售 李文龙 “ 俗话说:为了修复一个小bug而引入了一个更大bug ” 因所负责的系统使用的spring框架版本5.1.5.RELEASE在线上出过一个偶发的小事故,最后定位为spring-context中的一个bug导致的。 为了修复此bug进行了spring版本的升级,最终定的版本为收银台团队使用的版

    2024年02月01日
    浏览(45)
  • 【服务器训练调整yolov8时踩坑问题,修改记录】

    *** 另外网上yolov8教程特别多,关于数据集准备和制作这块,可以直接拆分的时候图片也拆分,也可以只记录在txt中,有三种方式所以在制作的时候都可以选择。需要也可以私信把我的处理脚本发你。 近期在服务器利用yolov8训练一些通用模型,发现不同时间段clone的yolov8内容和

    2024年02月19日
    浏览(39)
  • 微信小程序请求不到接口解决(踩坑记录)

    域名是否配置了ssl证书 小程序后台-开发-开发设置-服务器域名 中是否配置了域名 配置完后可以在开发者工具中查看 如果还是不能请求到接口,请检查 ssl证书链是否有问题 myssl检测工具 我的是因为支持了 TLS1.0协议被判定为不合规,关闭后正常

    2024年02月12日
    浏览(45)
  • Tensorflow车牌识别完整项目(含完整源代码及训练集)

    基于TensorFlow的车牌识别系统设计与实现,运用tensorflow和OpenCV的相关技术,实现车牌的定位、车牌的二值化、车牌去噪增强、图片的分割,模型的训练和车牌的识别等 项目问题,毕设,大创可私聊博主 目录 环境准备 思路流程 功能描述 细节阐述 项目总体框架 过程展示 技术

    2024年02月02日
    浏览(46)
  • LOL英雄联盟自动打人机训练升级【CircuitPython】

    设备:1920*1080 系统:Windows11 程序:CircuitPython 英雄:琴女 功能: 自动释放加血 自动释放攻击 自动对线 欢迎评论

    2024年02月16日
    浏览(45)
  • layui踩坑记录之form表单下的button按钮默认自动提交

    首先参考下面这篇文章: layui form表单下的button按钮会自动提交表单的问题以及解决方案_layui form里面其他button按钮_你用点心就行的博客-CSDN博客 他说的已经很清楚了,我再补充(啰嗦)一下: 其实就是使用form的时候,应该对应有一个提交按钮,配套使用。其他功能按钮相加

    2024年02月16日
    浏览(36)
  • 基于TF-IDF+TensorFlow+词云+LDA 新闻自动文摘推荐系统—深度学习算法应用(含ipynb源码)+训练数据集

    本项目运用了TF-IDF提取技术,结合词云数据可视化、LDA (Latent Dirichlet Allocation)模型训练以及语音转换系统,来实现一个基于TensorFlow的文本摘要程序。 首先,我们利用TF-IDF(Term Frequency-Inverse Document Frequency)技术来提取文本中的。这有助于找出文本中最具代表性的

    2024年02月13日
    浏览(49)
  • 记录一次uniapp实现APP自动升级

    app的版本管理和升级,是一个不可或缺的功能,而uniapp则是提供了一整套的流程,由于官方文档过于复杂,而且写的云里雾里的,所以个人记录一次我的操作,直到配置成功。 一共分为2个部分,官方提供的两个插件( uni-upgrade-center - Admin 和 uni-upgrade-center - App )配套使用,

    2024年01月23日
    浏览(55)
  • 代码训练LeetCode(9)Git自动同步脚本

    代码训练(9)LeetCode之Git自动同步脚本 Author: Once Day Date: 2024年3月10日 漫漫长路,才刚刚开始… 全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客 参考文章: Git使用记录_Once-Day的博客-CSDN博客 1. 题目 这个题目是自拟的,来自于个人开发过程中的需求: 写段bash脚本,同步

    2024年03月17日
    浏览(46)
  • gitlab配置使用ssh(clone)拉取项目失败的踩坑排查记录(配置了SSHkey仍然不能正常拉取代码)

    说起这个由来有一点尴尬,以前公司使用svn,使用git不多,后来由于项目管理和人员协作的需要开始使用git作为项目版本管理,以前的项目管理感觉比较混乱,所以就搭建了gitlab,gitlab-runner来作为项目管理,项目版本管理和自动化部署CICD,这样也确实提高了效率,但是呢,由

    2024年02月13日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包