欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python中numpy廣播功能(broadcasting)的一些注意事項

系統 2028 0

Python 的特性允許你使用廣播( broadcasting )功能,這是 Python numpy 程序語言庫中最靈活的地方。而我認為這是程序語言的優點,也是缺點。優點的原因在于它們創造出語言的表達性, Python 語言巨大的靈活性使得你僅僅通過一行代碼就能做很多事情。但是這也是缺點,由于廣播巨大的靈活性,有時候你對于廣播的特點以及廣播的工作原理這些細節不熟悉的話,你可能會產生很細微或者看起來很奇怪的 bug 。例如,如果你將一個列向量添加到一個行向量中,你會以為它報出維度不匹配或類型錯誤之類的錯誤,但是實際上你會得到一個行向量和列向量的求和。

Python 的這些奇怪的影響之中,其實是有一個內在的邏輯關系的。但是如果對 Python 不熟悉的話,我就曾經見過的一些學生非常生硬、非常艱難地去尋找 bug 。所以我在這里想做的就是分享給你們一些技巧,這些技巧對我非常有用,它們能消除或者簡化我的代碼中所有看起來很奇怪的 bug 。同時我也希望通過這些技巧,你也能更容易地寫沒有 bug Python numpy 代碼。

為了演示 Python-numpy 的一個容易被忽略的效果,特別是怎樣在 Python-numpy 中構造向量,讓我來做一個快速示范。首先設置,這樣會生成存儲在數組??中的5個高斯隨機數變量。之后輸出?,從屏幕上可以得知,此時??的 shape (形狀)是一個的結構。這在 Python 中被稱作 一個一維數組 。它既不是一個行向量也不是一個列向量,這也導致它有一些不是很直觀的效果。舉個例子,如果我輸出一個轉置陣,最終結果它會和看起來一樣,所以和的轉置陣最終結果看起來一樣。而如果我輸出和的轉置陣的內積,你可能會想:乘以的轉置返回給你的可能會是一個矩陣。但是如果我這樣做,你只會得到一個數。

python中numpy廣播功能(broadcasting)的一些注意事項_第1張圖片

所以我建議當你編寫神經網絡時,不要在它的 shape 是還是或者一維數組時使用數據結構。相反,如果你設置??為,那么這就將置于5行1列向量中。在先前的操作里??和??的轉置看起來一樣,而現在這樣的??變成一個新的??的轉置,并且它是一個行向量。請注意一個細微的差別,在這種數據結構中,當我們輸出??的轉置時有兩對方括號,而之前只有一對方括號,所以這就是1行5列的矩陣和一維數組的差別。

python中numpy廣播功能(broadcasting)的一些注意事項_第2張圖片

如果你輸出??和??的轉置的乘積,然后會返回給你一個向量的外積,是吧?所以這兩個向量的外積返回給你的是一個矩陣。

python中numpy廣播功能(broadcasting)的一些注意事項_第3張圖片

就我們剛才看到的,再進一步說明。首先我們剛剛運行的命令是這個?,而且它生成了一個數據結構?,是,一個有趣的東西。這被稱作??的一維數組,同時這也是一個非常有趣的數據結構。它不像行向量和列向量那樣表現的很一致,這也讓它的一些影響不那么明顯。所以我建議,當你在編程練習或者在執行邏輯回歸和神經網絡時,你不需要使用這些一維數組。

python中numpy廣播功能(broadcasting)的一些注意事項_第4張圖片

相反,如果你每次創建一個數組,你都得讓它成為一個列向量,產生一個向量或者你讓它成為一個行向量,那么你的向量的行為可能會更容易被理解。所以在這種情況下,等同于。這種表現很像?,但是實際上卻是一個列向量。同時這也是為什么當它是一個列向量的時候,你能認為這是矩陣;同時這里?將要變成,這就像行向量一樣。所以當你需要一個向量時,我會說用這個或那個( column vector or row vector ),但絕不會是一維數組。

我寫代碼時還有一件經常做的事,那就是如果我不完全確定一個向量的維度( dimension ),我經常會扔進一個斷言語句( assertion statement )。像這樣,去確保在這種情況下是一個向量,或者說是一個列向量。這些斷言語句實際上是要去執行的,并且它們也會有助于為你的代碼提供信息。所以不論你要做什么,不要猶豫直接插入斷言語句。如果你不小心以一維數組來執行,你也能夠重新改變數組維數?,表明一個數組或者一個數組,以致于它表現更像列向量或行向量。

我有時候看見學生因為一維數組不直觀的影響,難以定位bug而告終。通過在原先的代碼里清除一維數組,我的代碼變得更加簡潔。而且實際上就我在代碼中表現的事情而言,我從來不使用一維數組。因此,要去簡化你的代碼,而且不要使用一維數組。總是使用??維矩陣(基本上是列向量),或者??維矩陣(基本上是行向量),這樣你可以減少很多 assert 語句來節省核矩陣和數組的維數的時間。另外,為了確保你的矩陣或向量所需要的維數時,不要羞于? reshape ?操作。

總之,我希望這些建議能幫助你解決一個 Python 中的bug,從而使你更容易地完成練習。

?

?

了解更多?

微信公眾號:freeinvest


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 午夜视频一区二区三区 | 九一国产在线观看 | 日本无码V视频一区二区 | 免费黄色电影在线观看 | 欧美午夜视频一区二区三区 | 亚洲精品久久久久一区二区 | 天天草综合网 | 国产主播在线看 | yeyelu| 日本高清色片 | 亚洲三级视频 | 欧美一区二区三区四区夜夜大片 | 欧美第一页草草影院浮力 | 欧美高清极品videossex | 午夜在线影院 | 色婷婷综合在线 | 亚洲精品久久国产高清 | 4hu四虎永久免在线视看 | 草莓视频午夜在线观影 | 天天摸天天爽视频69视频 | 91香蕉视频导航 | 999热在线精品观看全部 | 国产福利不卡视频在免费播放 | 国产日韩一区二区三区在线观看 | 免费无码毛片一区二区A片 成人18网站 | 久久精品麻豆 | 91亚洲国产| 精品福利在线视频 | 一区二区三区回区在观看免费视频 | A片扒开双腿猛进入免费 | 91精品网| 亚洲乱码在线卡一卡二卡新区 | 国产成人免费视频网站高清观看视频 | 日韩一区二区三区视频 | 日韩精品在线一区 | 成人精品视频一区二区三区尤物 | 中文字幕一区二区三区四区 | 天天操天天射天天舔 | 精品免费 | 成人网页 | 爱色av|