最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

torcy7中的THTenser_(random)(a ,b)是怎么回事

2023-07-05 10:20 作者:老師明明可以靠顏值  | 我要投稿

pytorch是非常流行的人工智能訓(xùn)練框架。它的起點是C寫的軟件包torch.

我找到了一份torch的源碼:torch7.

在嘗試運行它的過程中,發(fā)現(xiàn)了函數(shù)的如下定義方式:

產(chǎn)生隨機數(shù)的函數(shù),一般來說我們這樣定義:

注意到,函數(shù)必須只能有一個小括號().這是C編譯器要求的。不這樣就會語法錯誤。

問題來了。

為什么這里可以這樣寫呢?難道C語言允許寫兩個括號了?

其實不是的,這里只是使用了宏定義#define

在源碼中,對THTensor_(NAME)使用了如下宏定義:

然后又對TH_CONCAT_4進(jìn)行了如下宏定義:

然后又對TH_CONCAT_4_EXPAND進(jìn)行了如下宏定義:

而x ## y ## z ## w的意思是生成形如x_y_z_x這樣的字符串。

連起來就是:

所以,ThTensor_(random)(THTensor *self, THGenerator * _generator);實際上定義了這樣一個函數(shù):

THRealTensor_random(THTensor *self,THGenerator *_generator)

那么為什么要使用宏這樣定義呢?這不是增加了代碼閱讀難度么?

因為作者想隨時批量的修改函數(shù)名字,但又不想逐個去修改,不僅慢,還容易出錯。

這樣宏定義后,只用修改一處,就能達(dá)到修改所有地方。

torcy7中的THTenser_(random)(a ,b)是怎么回事的評論 (共 條)

分享到微博請遵守國家法律
永修县| 潼关县| 新和县| 磴口县| 舞阳县| 扶绥县| 洪洞县| 沭阳县| 保德县| 永年县| 江孜县| 宁都县| 台湾省| 香格里拉县| 肇东市| 通化市| 囊谦县| 南漳县| 泰来县| 易门县| 郯城县| 延吉市| 岗巴县| 瓮安县| 峡江县| 综艺| 菏泽市| 白银市| 若羌县| 峨边| 安康市| 吴堡县| 靖西县| 双江| 元江| 广德县| 平果县| 大厂| 沧源| 独山县| 科尔|