阿鲲的博客 主修软件工程和算法模型,极客成长中

tf1到tf2的迁移

2020-11-03
jktian

阅读:


故事起源于熊大佬的对于微服务的向往… (好吧,其实只是大佬想要我扩展他的大作业–用flask+layoutit做的实验室小网站)

正文开始

1 网站初始功能

1.1 多模态检索和生成) 说人话!!–>

上传两张人脸,输出二者为同一人的概率,分数值域[0,1] 上传两段说话音频,输出二者为同一说话人的概率,分数值域[0,1] 上传一段音频,输出数据库中和音频最匹配的人脸,若数据库中无对应的人脸数据,则生成一张人脸 无输入,直接生成一张虚拟的高清人脸 ps. 简单分析一下可行性,因为深度神经网络就相当于是个黑盒的空间映射器,可以将原始的数据从一个空间映射到另一个空间,即一个输入数据经过映射最终输出一个特征向量。 而本任务的假设就是可以将说话人的声音和人脸映射到同一个语义空间,使得在该空间中,同一个人的数据距离尽可能小,不同人的距离尽可能大。

1.2 关于上线

学校服务器有过被黑的经历,所以只开放了极少端口,我只能可怜滴在本地跑代码啦

2 需求分析

实验室代码风格自由,熊大佬使用tensorflow1.4,我使用keras2,老师们使用pytorch; 不过,组内最近开始了录代码讲解视频的交流,相当于是升级版周报啦 本人受不了tf1的繁琐,pytorch以后会尝试,但本科毕设就是走的keras2, 所以打算直接升级tf1–tf2,当初已经在天河上折腾过一番环境了,也算有了些经验

3 渡劫开始

3.1 听说谷歌有个开源工具?

命令行

tf_upgrade_v2 --intree <tf1_folder> --outtree <tf2_folder> --reportfile report.txt

这行命令可以完整初步转换,但如tf.contrib这种被弃用的模块,就只能手动改了。 (没错,运行命令行跑完的程序,会报错没有contrib)

3.2 模块和类,傻傻分不清楚

众所周知,大部分问题直接google英文,是可以在github-issue和stackoverflow上找到病友的。 这时,我们就可以针对某个具体的类或者函数找到tf2的模块,进行相应的import和代替就好了

tf1原始代码行

from tensorflow.contrib.data import prefetch_to_device, shuffle_and_repeat, map_and_batch

tf2更改后的代码行(出错版本)

import tensorflow.data.experimental

没错,你猜对了,tensorflow.data.experimental是一个类,而不是模块,所以不能import,也就是说,可以直接在代码里用tensorflow.data.experimental.prefetch_to_device()的方式来进行函数调用。(谁说有.符号的,就一定是子模块呢,有时候,还是

要在终端里找找源文件的)

4 后续

前几天又看了一遍java,拾掇起来了类的概念,打算重新搞一遍设计模式,毕竟咱是软件工程嘛。 并且,在实验室搞深度学习也有一年了,从理论基础到前沿技术,还有各种花哨的任务和trick,也多少了解了一些,实在非本命,还是写确定性的代码和系统更快乐。 虽然我打算接下来搞java-web和分布式大数据啥的,但是在熊mentor的指导下,我还是先看微服务去吧/手动狗头


Similar Posts

上一篇 MTCNN网络

下一篇 homebrew历险记

Comments