码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 简单介绍一下tensorflow与pytorch的相互转换(主要是tensorflow转pytorch)


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

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

    目录

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

    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})
    
    • 1
    • 2

    而在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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    if use_gpu is True:
    	imputed_data=imputed_data.cpu().detach().numpy()
    else:
    	imputed_data=imputed_data.detach().numpy()
    
    • 1
    • 2
    • 3
    • 4

    而tensorflow中不需要这种操作。

    5.其他函数

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

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

    【说明】:本文的介绍仅供参考,实际转换请多查阅相关资料,如果有能力,建议这两种深度学习框架都进行掌握~

  • 相关阅读:
    计算机毕业设计Java的创意项目众筹平台的设计与开发(源码+系统+mysql数据库+lw文档)
    python6
    Java01-JDK1.8下载安装教程(win11版)
    【批量区域识别内容重命名】批量识别图片区域文字并重命名,批量图片部分识别内容重命文件,PDF区域识别提取重命名
    Cheat Engine 修改器获取内存数据心路历程, THREADSTACK0 C# .NET VB 获取基址 CE修改器
    【Netty 介绍】
    概率论的学习整理5:贝叶斯(bayes)法则和贝叶斯概率
    【计算机网络-自顶向下方法】应用层(SMTP、POP3、DNS)
    「Java核心面试系列」面试竟然连这MySQL面试核心25问,都不会?
    自然语言处理历史史诗:NLP的范式演变与Python全实现
  • 原文地址:https://blog.csdn.net/didi_ya/article/details/125461794
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号