日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

淺談tensorflow與pytorch的相互轉(zhuǎn)換_python

作者:wendy_ya ? 更新時(shí)間: 2022-08-19 編程語(yǔ)言

本文以一段代碼為例,簡(jiǎn)單介紹一下tensorflow與pytorch的相互轉(zhuǎn)換(主要是tensorflow轉(zhuǎn)pytorch),可能介紹的沒(méi)有那么詳細(xì),僅供參考。

由于本人只熟悉pytorch,而對(duì)tensorflow一知半解,而代碼經(jīng)常遇到tensorflow,而我希望使用pytorch,因此簡(jiǎn)單介紹一下tensorflow轉(zhuǎn)pytorch,可能存在諸多錯(cuò)誤,希望輕噴~

1.變量預(yù)定義

在TensorFlow的世界里,變量的定義和初始化是分開(kāi)的。
tensorflow中一般都是在開(kāi)頭預(yù)定義變量,聲明其數(shù)據(jù)類(lèi)型、形狀等,在執(zhí)行的時(shí)候再賦具體的值,如下圖所示,而pytorch用到時(shí)才會(huì)定義,定義和變量初始化是合在一起的。

在這里插入圖片描述

2.創(chuàng)建變量并初始化

tensorflow中利用tf.Variable創(chuàng)建變量并進(jìn)行初始化,而pytorch中使用torch.tensor創(chuàng)建變量并進(jìn)行初始化,如下圖所示。

在這里插入圖片描述

3.語(yǔ)句執(zhí)行

在TensorFlow的世界里,變量的定義和初始化是分開(kāi)的,所有關(guān)于圖變量的賦值和計(jì)算都要通過(guò)tf.Session的run來(lái)進(jìn)行。

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

而在pytorch中,并不需要通過(guò)run進(jìn)行,賦值完了直接計(jì)算即可。

4.tensor

pytorch運(yùn)算時(shí)要?jiǎng)?chuàng)建完的numpy數(shù)組轉(zhuǎn)為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)

最后運(yùn)行完還要將tensor數(shù)據(jù)類(lèi)型轉(zhuǎn)換回numpy數(shù)組:

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

而tensorflow中不需要這種操作。

5.其他函數(shù)

在tensorflow中包含諸多函數(shù)是pytorch中沒(méi)有的,但是都可以在其他庫(kù)中找到類(lèi)似,具體如下表所示。

tensorflow中函數(shù) pytorch中代替(所在庫(kù)) 參數(shù)區(qū)別
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)

原文鏈接:https://blog.csdn.net/didi_ya/article/details/125461794

欄目分類(lèi)
最近更新