tensorflow与pytorch的转换是怎样的

Admin 2022-08-08 群英技术资讯 377 次浏览

今天这篇我们来学习和了解“tensorflow与pytorch的转换是怎样的”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“tensorflow与pytorch的转换是怎样的”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!




本文以一段代码为例,简单介绍一下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的转换是怎样的”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,欢迎关注群英网络,小编每天都会为大家更新不同的知识。
群英智防CDN,智能加速解决方案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服