tensorflow与pytorch的转换是怎样的
Admin 2022-08-08 群英技术资讯 1165 次浏览
今天这篇我们来学习和了解“tensorflow与pytorch的转换是怎样的”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“tensorflow与pytorch的转换是怎样的”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!由于本人只熟悉pytorch,而对tensorflow一知半解,而代码经常遇到tensorflow,而我希望使用pytorch,因此简单介绍一下tensorflow转pytorch,可能存在诸多错误,希望轻喷~
在TensorFlow的世界里,变量的定义和初始化是分开的。
tensorflow中一般都是在开头预定义变量,声明其数据类型、形状等,在执行的时候再赋具体的值,如下图所示,而pytorch用到时才会定义,定义和变量初始化是合在一起的。

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

在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进行,赋值完了直接计算即可。
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中不需要这种操作。
在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) |
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。Python 有两种错误很容易辨认:语法错误和异常。
这篇文章主要介绍了Python中列表索引 A[ : 2 ]与A[ : , 2]的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要为大家详细介绍了python实现象棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文主要介绍了python iloc和loc切片的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要介绍了Django2.2配置xadmin的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008