PyTorch中實現開立方

技術背景

在PyTorch中,沒有直接實現cbrt這一算子。這個算子是用于計算一個數的開立方,例如,最簡單的-8開立方就是-2。但這里有個問題是,在PyTorch中,因為沒有cbrt算子,如果直接用冪次計算去操作數字,就有可能出現問題。

代碼示例

首先看一下numpy做開立方的代碼示例:

In [1]: import numpy as npIn [2]: a = np.array(-8, np.float32)In [3]: a**(1/3)
<ipython-input-3-f6e83d4e282e>:1: RuntimeWarning: invalid value encountered in powera**(1/3)
Out[3]: np.float32(nan)In [4]: np.cbrt(a)
Out[4]: np.float32(-2.0)

在這個示例中,如果直接開立方,結果會是一個nan,很明顯不是我們想要的一個結果。而cbrt是一個單獨實現的開立方算子,可以支持負數的輸入,計算結果也是正確的。在PyTorch的場景下,只能用冪次運算:

In [1]: import torch as tcIn [2]: a=tc.tensor(-8,dtype=tc.float32)In [3]: a**(1/3)
Out[3]: tensor(nan)

這樣得到的結果是錯誤的。因此需要我們自己實現一個cbrt函數:

In [1]: import torch as tcIn [2]: cbrt=lambda x: tc.sign(x)*tc.abs(x)**(1/3)In [3]: a=tc.tensor(-8,dtype=tc.float32)In [4]: cbrt(a)
Out[4]: tensor(-2.)

其實邏輯也比較簡單,就是先把符號提取出來,然后再轉化為正數正常計算就好了。

總結概要

本文介紹了在PyTorch中直接使用冪次函數計算有可能導致的計算結果異常的問題。由于PyTorch中并未像Numpy和MindSpore一樣直接支持cbrt開立方函數,因此這里也提供了一個在PyTorch中計算開立方的函數。

版權聲明

本文首發鏈接為:https://www.cnblogs.com/dechinphy/p/cbrt.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

請博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/911998.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/911998.shtml
英文地址,請注明出處:http://en.pswp.cn/news/911998.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于如何在 Git 中切換到之前創建的分支的方法

文章目錄 關于如何在 Git 中切換到之前創建的分支的方法一、確保你在項目目錄中二、查看所有分支&#xff08;可選&#xff09;三、切換到目標分支四、如果分支僅在遠程存在五、驗證是否切換成功六、常見問題處理七、總結命令流程 PS:下次進入分支時&#xff0c;只需完成步驟1 …

基于深度學習的智能圖像語義分割系統:技術與實踐

前言 圖像語義分割是計算機視覺領域中的一個重要任務&#xff0c;其目標是將圖像中的每個像素分配到預定義的語義類別中。這一技術在自動駕駛、醫學影像分析、機器人視覺等多個領域有著廣泛的應用。近年來&#xff0c;深度學習技術&#xff0c;尤其是卷積神經網絡&#xff08;C…

歷史軌跡組件性能優化方案

針對歷史軌跡組件的性能優化&#xff0c;可從數據處理、渲染策略、內存管理和交互優化四個方面入手。以下是具體的優化方向和實現方案&#xff1a; 一、數據處理優化 1. 軌跡數據抽稀算法 原理&#xff1a;在不影響軌跡整體形狀的前提下&#xff0c;減少軌跡點數量實現方案&…

【論文閱讀36】- Graph Attention Network(2025)

這篇論文主要介紹了一種基于改進型圖注意力網絡&#xff08;Graph Attention Network, GAT&#xff09;的滑坡變形異質性監測方法。該方法通過融合多尺度時間嵌入和自適應圖學習&#xff0c;能夠同時捕捉監測點之間復雜的時空依賴關系&#xff0c;有效反映滑坡的局部與整體變形…

CSS基礎3

動畫-animation 動畫-animation與 transition過渡動畫的區別 transition過渡動畫&#xff1a;實現兩個狀態間的變化過程動畫animation&#xff1a;實現多個狀態間的變化過程&#xff0c;動畫過程可控&#xff08;重復播放、最終畫面、是否暫停&#xff09; 走馬燈-使用transiti…

Java 程序設計試題?

?考試時間&#xff1a;120 分鐘? ?總分&#xff1a;100 分? 一、選擇題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09; 1.以下哪個不是 Java 的關鍵字&#xff1f; A. final B. sizeof C. static D. void 2.以下代碼輸出結果是&#xff1f; System.out.printl…

Elasticsearch(ES)與 OpenSearch(OS)

Elasticsearch&#xff08;ES&#xff09;與 OpenSearch&#xff08;OS&#xff09;本質上是同源分叉、獨立演進的技術&#xff0c;兩者關系可概括為“起源相同、目標分化”。以下是關鍵要點解析&#xff1a; &#x1f50d; 一、核心關系&#xff1a;分叉與獨立演進 起源相同 O…

Python爬蟲實戰:研究Ghost.py相關技術

1 引言 1.1 研究背景與意義 隨著互聯網技術的不斷發展,現代網頁越來越多地采用 JavaScript 動態生成內容,傳統的靜態爬蟲技術已難以滿足需求。例如,許多新聞網站的評論區、電商平臺的商品列表以及社交網站的動態內容均通過 AJAX 異步加載,普通爬蟲無法獲取這些內容。Ghos…

PostgreSQL(知識片):查詢/計算Selectivity(可選性)

一、視圖pg_ststs查詢可選性 1、當可選性較小時&#xff0c;可以用視圖pg_ststs來查詢 表的每一列的MVC&#xff08;most Common Value&#xff09;作為一對most_common_vals和most_common_freqs的列存儲在pg_ststs視圖中。 &#xff08;1&#xff09;most_common_vals&#x…

Android Studio 打 APK 包報錯 Invalid keystore format 的解決方法

提示&#xff1a;“奔跑吧鄧鄧子” 的必備核心技能專欄聚焦計算機技術與職場場景&#xff0c;拆解程序員、產品經理等技術從業者的核心能力圖譜。內容涵蓋編程思維、算法實戰、項目管理、技術架構等硬核技能&#xff0c;結合案例解析代碼優化、跨團隊協作等落地方法論。定期更新…

通義靈碼2.5智能體模式實戰———集成高德MCP 10分鐘生成周邊服務地圖應用

1 引言 在當今快節奏的開發環境中&#xff0c;智能編程助手正成為開發者生產力的倍增器。通義靈碼2.5的智能體模式通過任務分解、多輪對話和上下文感知&#xff0c;將傳統代碼補全提升為完整的解決方案生成能力。本文將以實戰案例展示如何利用通義靈碼2.5集成高德地圖MCP服務&…

【Linux】使用ip link命令設置bond

目錄 1、介紹2、設置步驟【1】創建bonding接口【2】設置bonding模式【3】添加物理網口到bonding接口【4】激活bonding接口 3、解除步驟【1】關閉bond接口【2】接觸從屬接口【3】刪除bond接口 1、介紹 設置bond的方法有很多種&#xff0c;其中通過命令行ip link設置就是其中一種…

Camunda相關表結構和字段備注SQL腳本

Camunda相關表結構和字段備注SQL腳本 引camunda engine表和字段備注 引 Camunda engine服務啟動時會自動創建相關的表&#xff0c;沿用了activity的設計&#xff0c;我這里使用的是7.17.0版&#xff0c;自動生成了49張表&#xff0c;但所有的表和字段都沒有備注信息&#xff0c…

Qt、C++自定義按鈕、組件、事件編程開發練習,萬字實戰解析!!

x項目地址&#xff1a;https://gitee.com/fan-wenshan/qt_learn_button-andevent_zhengzhuo 項目界面截圖&#xff1a; ### 項目介紹&#xff1a;comstomSingal (Qt應用程序) 項目基本信息 - 項目類型 &#xff1a;Qt Widgets應用程序 - 開發環境 &#xff1a;Qt 5.12.12 Min…

商務年度總結匯報PPT模版分享

商務匯報&#xff0c;工作總結&#xff0c;畢業答辯&#xff0c;簡歷競聘PPT模版&#xff0c;創意年終匯報PPT模版&#xff0c;IDEAS商務匯報PPT模版&#xff0c;年度總結PPT模版&#xff0c;創意低多邊形PPT模版&#xff0c;商務型PPT模版&#xff0c;小清新創意花朵PPT模版&a…

電機設計仿真軟件學習DAY3——Maxwell界面功能+3D幾何模型繪制

"手把手教你玩轉電機&#xff01;每日更新教程&#xff0c;評論區答疑解惑&#xff0c;小白也能變大神&#xff01;" 目錄 maxwell基礎操作 一.Maxwell基礎操作&#xff1a;新建項目 二.maxwell3D界面 三.maxwell3D繪圖 3.1繪制圓柱體的方法 3.2繪制正方體的方法…

Apache 支持 HTTPS

證書文件 提取私鑰 openssl pkcs12 -in cert.pfx -nocerts -out private.key -nodes 打開命令行&#xff08;CMD 或 PowerShell&#xff09;&#xff0c;進入證書所在目錄&#xff0c;輸入上面命令&#xff0c;它會提示你輸入密碼&#xff0c;可以從 password.txt 中復制 提取證…

自然語言處理中的Transformer模型:超越RNN和LSTM

在人工智能的眾多領域中,**自然語言處理(Natural Language Processing, NLP)**無疑是最具挑戰性也最具前景的方向之一。從機器翻譯、文本摘要到情感分析和智能問答,NLP 旨在讓機器理解、解釋和生成人類語言。長期以來,循環神經網絡(Recurrent Neural Network, RNN)及其變…

vue3 new Date() 時間操作

在Vue 3中&#xff0c;你可以使用JavaScript的Date對象來處理日期和時間。如果你想創建一個新的Date對象表示當前時間減去一天&#xff0c;你可以使用以下幾種方法之一&#xff1a; 方法1&#xff1a;使用Date對象的setDate()方法 const now new Date(); now.setDate(now.ge…

WebRTC(八):SDP

SDP 概念 SDP 是一種描述多媒體通信會話的文本格式&#xff08;基于 MIME&#xff0c;RFC 4566&#xff09;。本身 不傳輸數據&#xff0c;僅用于在會話建立階段傳遞信息。常與 SIP&#xff08;VoIP&#xff09;、RTSP、WebRTC 等協議配合使用。 用途 描述媒體類型&#xf…