浅谈tensorflow与pytorch的相互转换

本文主要介绍了简单介绍一下tensorflow与pytorch的相互转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

目录
  • 1.变量预定义
  • 2.创建变量并初始化
  • 3.语句执行
  • 4.tensor
  • 5.其他函数

本文以一段代码为例,简单介绍一下tensorflow与pytorch的相互转换(主要是tensorflow转pytorch),可能介绍的没有那么详细,仅供参考。

由于本人只熟悉pytorch,而对tensorflow一知半解,而代码经常遇到tensorflow,而我希望使用pytorch,因此简单介绍一下tensorflow转pytorch,可能存在诸多错误,希望轻喷~

1.变量预定义

在TensorFlow的世界里,变量的定义和初始化是分开的。
tensorflow中一般都是在开头预定义变量,声明其数据类型、形状等,在执行的时候再赋具体的值,如下图所示,而pytorch用到时才会定义,定义和变量初始化是合在一起的。

2.创建变量并初始化

tensorflow中利用tf.Variable创建变量并进行初始化,而pytorch中使用torch.tensor创建变量并进行初始化,如下图所示。

3.语句执行

在TensorFlow的世界里,变量的定义和初始化是分开的,所有关于图变量的赋值和计算都要通过tf.Session的run来进行。

sess.run([G_solver, G_loss_temp, MSE_loss],
             feed_dict = {X: X_mb, M: M_mb, H: H_mb})

而在pytorch中,并不需要通过run进行,赋值完了直接计算即可。

4.tensor

pytorch运算时要创建完的numpy数组转为tensor,如下:

if use_gpu is True:
	X_mb = torch.tensor(X_mb, device="cuda")
	M_mb = torch.tensor(M_mb, device="cuda")
	H_mb = torch.tensor(H_mb, device="cuda")
else:
	X_mb = torch.tensor(X_mb)
	M_mb = torch.tensor(M_mb)
	H_mb = torch.tensor(H_mb)

最后运行完还要将tensor数据类型转换回numpy数组:

if use_gpu is True:
	imputed_data=imputed_data.cpu().detach().numpy()
else:
	imputed_data=imputed_data.detach().numpy()

而tensorflow中不需要这种操作。

5.其他函数

在tensorflow中包含诸多函数是pytorch中没有的,但是都可以在其他库中找到类似,具体如下表所示。

tensorflow中函数 pytorch中代替(所在库) 参数区别
tf.sqrt np.sqrt(numpy) 完全相同
tf.random_normal np.random.normal(numpy) tf.random_normal(shape = size, stddev = xavier_stddev)
np.random.normal(size = size, scale = xavier_stddev)
tf.concat torch.cat(torch) inputs = tf.concat(values = [x, m], axis = 1)
inputs = torch.cat(dim=1, tensors=[x, m])
tf.nn.relu F.relu(torch.nn.functional) 完全相同
tf.nn.sigmoid torch.sigmoid(torch) 完全相同
tf.matmul torch.matmul(torch) 完全相同
tf.reduce_mean torch.mean(torch) 完全相同
tf.log torch.log(torch) 完全相同
tf.zeros np.zeros 完全相同
tf.train.AdamOptimizer torch.optim.Adam(torch) optimizer_D = tf.train.AdamOptimizer().minimize(D_loss, var_list=theta_D)
optimizer_D = torch.optim.Adam(params=theta_D)

到此这篇关于浅谈tensorflow与pytorch的相互转换的文章就介绍到这了,更多相关tensorflow与pytorch的相互转换内容请搜索昆居客【www.kunjuke.com】以前的文章或继续浏览下面的相关文章希望大家以后多多支持昆居客【www.kunjuke.com】!

相关推荐:

Realta Fusion 成为首家实现等离子体直接能量转换的商业核聚变企业

7 月 1 日消息,美国商业核聚变企业 Realta Fusion 当地时间 30 日宣布,其在 6 月 19 日正式成为首家实现等离子体直接能量转换 (DEC) 的同类企业。通过减缓机器一端带电粒子的速度,Realta Fusion 的 DEC 设备构建了约 100V 电势差,并驱动了数安培级别的电流,这部分电能可点亮多个电灯泡。了解到,Realta Fusion 在核聚变商业化探索中采用磁镜技...

UC浏览器电脑版怎么设置多个用户相互独立的数据配置?

UC浏览器电脑版通过内置多用户管理实现物理隔离:每个用户拥有独立Cookie、下载目录和书签,不共享数据;添加用户时不填手机号可避免云绑定;切换用户后地址栏变色、底部显示标识,且登录账号不跨用户可见;仅主动绑定UC账号并开启指定同步项才上传数据。 UC浏览器电脑版需要为不同用途(如工作账号、私人账号、测试环境)创建互不读取Cookie、不共享下载目录、不交叉同步书签的独立数据空间,才能真正实现浏览...

Calibre怎么转换EPUB格式为MOBI Calibre转换方法【技巧】

必须用Calibre将EPUB转换为MOBI格式才能在Kindle上正常阅读,不能仅修改后缀名;添加书籍后,在转换设置中输出格式须选MOBI、勾选“删除段落间空行”,导出后即可通过USB或邮件推送至Kindle。 你需要把刚下载的EPUB电子书推送到Kindle设备上,但发现Kindle不认这个格式——它只原生支持MOBI(以及新版支持AZW3),而EPUB文件直接传输过去会显示“无法打开”。这时...

Vidu怎么实现场景转换效果?

启用“主体参照”功能可锁定核心元素实现自然转场,结合自然语言运镜、首尾帧控制、多主体融合及全景音效体系,全面提升场景转换的连贯性与沉浸感。 如果您在使用vidu生成视频时希望实现自然、连贯的场景转换效果,但发现画面跳变、逻辑断裂或运镜生硬,则可能是由于提示词描述模糊、缺乏上下文锚点或未启用关键一致性控制机制。以下是实现高质量场景转换效果的具体操作路径: 一、启用“主体参照”功能锁定核心元素 该功能...

千问在做代码翻译时支持哪些语言之间的转换?

千问支持多层级代码翻译:一、主流语言直接双向语义翻译,需明确标注源/目标语言;二、小众语言通过英语伪代码桥接;三、混合内容用【code】/【text】标签分区处理;四、图像代码可OCR识别后转写;五、私有部署支持加载语法文件扩展专有语言。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您在千问中执行代码翻译任务,但发现部分语言对无法正确...
· AI · 49901

PDF一键转换word免费工具入口「直接用」

PDF一键转换Word免费工具入口为https://pdf.cn/,无需注册即可拖拽上传,支持多端同步,具备高兼容性、快速响应、强隐私保护及优质输出质量。接下来由PHP小编为大家带来PDF一键转换word免费工具入口,感兴趣的用户一起随小编来瞧瞧吧! https://pdf.cn/ 该平台专注轻量级文档格式交互处理,无需注册即可启动基础转换流程,支持拖拽上传与多端同步操作,适配日常学习资料、课程讲...

旺影速转怎么转换音频格式

在数字化浪潮席卷的今天,音频格式转换已成为日常工作中高频出现的需求。无论是为了兼容各类播放设备,还是适配专业编辑软件,拥有一款稳定、智能且操作流畅的音频格式转换工具,显得尤为关键。而旺影速转,正是为此而生——一款专为用户简化流程、提升效率的音频格式转换利器。 直观友好的交互设计 旺影速转采用极简主义界面风格,功能布局清晰有序,新手也能在几秒内理解核心操作逻辑。启动软件后,主界面无冗余元素,拖拽区域...

老毛桃PE如何转换动态磁盘_动态盘转基本盘不丢数据【转换】

可借助老毛桃PE中的DiskGenius、DeskGenius或MiniTool Partition Wizard实现动态磁盘无损转基本磁盘:三者均通过解析LDM数据库、重建分区表或重写磁盘标识完成转换,无需删除卷或格式化,数据物理位置不变且保持可访问。 如果您在Windows系统中误将基本磁盘转为动态磁盘,且磁盘上存有重要数据,又希望在不丢失数据的前提下恢复为基本磁盘,则需借助PE环境下的专业分...