深度學習-03-函數的連續調用


深度學習-03-函數的連續調用

????????本文是《深度學習入門2-自製框架》 的學習筆記,記錄自己學習心得,以及對重點知識的理解。如果內容對你有幫助,請支持正版,去購買正版書籍,支持正版書籍不僅是尊重作者的辛勤勞動,也是鼓勵更多優秀作品問世。

????????當前筆記內容主要為:步驟2 函數的連續調用 章節的相關理解。

????????書籍總共分為5個階段,每個階段分很多步驟,最終是一步一步實現一個深度學習框架。例如前兩個階段為:

第 1 階段共包括 10 個步驟 。 在這個階段,將創建自動微分的機制
第 2 階段,從步驟11-24,該階段的主要目標是擴展當前的 DeZero ,使它能夠執行更復雜的計算 ,使它能 夠處理接收多個輸入的函數和返回多個輸出的函數


1.Exp函數的實現


上面一節實現了初級版,和高階版本的函數Function 的實現,這個版本我們繼續實現一個新的函數,以及將多個函數連接起來進行計算。
首先實現一個新的函數 ?y = exp(x)?代碼如下:

import numpy as np
from step01 import *
from step02 import *class Exp(Function):def forward(self,x):return np.exp(x)

有了前面幾節的學習,定義這個函數應該不太難。?

2.函數的連續調用

怎么讓函數能夠連續調用?我們回到我們的Function 類的定義,我們發現

import numpy as np
from step01 import *class Function:def __call__(self, input):x = input.datay = self.forward(x)output = Variable(y)return outputdef forward(self, x):raise NotImplementedError() ?#使用Function ?這個方法forward 方法的人 , 這個方法應該通過繼承采實現

我們的Function 在執行call 方法后,返回的都是我們的箱子變量 Variable 所以我們可以很容易的在多個函數將上一個
輸出作為下一個函數的輸入。這樣就串起來了。

例如我們可以定義函數 y = (exp(x^2))^2 實現如下:

? ? A = Square()B = Exp()C = Square()x = Variable(np.array(0.5))a = A(x)b = B(a)y = C(b)


輸出結果為:

1.648721270700128
3.項目代碼
'''
step03.py
函數的連續調用'''import numpy as np
from step01 import *
from step02_1 import *class Exp(Function):def forward(self,x):return np.exp(x)if __name__ == '__main__':A = Square()B = Exp()C = Square()x = Variable(np.array(0.5))a = A(x)b = B(a)y = C(b)print(y.data)'''
輸出結果:
C:\Users\Administrator\AppData\Local\Programs\Python\Python39-32\python.exe D:/pyworkspace/dezero-01/step03.py
1.648721270700128'''
4.總結


本節實現了函數的連續調用,能實現連續調用,得益于我們定義的Function 類輸入輸出參數都是Variable 箱子變量類型。

通過簡單函數組合可以構成復合函數,有了復合函數,我們就可以執行復雜的計算。本節例子程序所描繪的多個函數的計算圖如下所示。

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

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

相關文章

LLaMA-Factory推理實踐

運行成功的記錄 平臺:帶有GPU的服務器 運行的命令 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ conda create -n py310 python3.10 conda activate py310由于服務器不能直接從huggingface上下載Qwen1.5-0.5B,但本地可…

51仿真器 PZ-51Tracker 未知設備

插上仿真器,右擊我的電腦 等待一下,選擇winUSB 此時在keil中選擇仿真器會報錯,需要安裝如下我是win10) 安裝好后退出再試,沒有報錯即可 這項也要選擇 另外配置晶振

MYSQL之存儲篇

MYSQL之存儲篇 存儲過程簡介存儲過程優點: MySQL的存儲過程MySQL存儲過程的創建1.格式2.聲明分割符3.參數4.變量5.注釋6.MySQL存儲過程的調用7. MySQL存儲過程的查詢8.MySQL存儲過程的修改9.MySQL存儲過程的刪除10. MySQL存儲過程的控制語句11.MySQL存儲過程的基本函…

mybatis配置環境流程

mybatis配置環境流程 為啥要用mybatis&#xff1a;通過Mybatis實現快速訪問后端pgsql、mysql等數據庫。 1.修改pom.xml&#xff0c;添加mybatis相關依賴 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-s…

React + SpringBoot開發用戶中心管理系統

用戶中心項目搭建筆記 技術棧 前端技術棧 “react”: “^18.2.0”,ant-design-pro 后端技術棧 SpringBoot 2.6.x 項目源碼地址 https://gitee.com/szxio/user-center 前端項目搭建 快速搭建一個后端管理系統項目框架 初始化 antDesignPro 官網&#xff1a; https://…

Spel表達式使用案例

package com.example.demo.api;import com.example.demo.model.User; import lombok.extern.slf4j.Slf4j;<

CSS Web前端框架:深入剖析與應用實踐

CSS Web前端框架&#xff1a;深入剖析與應用實踐 在快速發展的Web技術領域&#xff0c;CSS Web前端框架已成為構建現代化、高效且響應式網頁的關鍵工具。它們不僅簡化了開發過程&#xff0c;還提高了代碼的可維護性和復用性。然而&#xff0c;面對眾多紛繁復雜的框架選擇&…

ByteBuddy字節碼增強器

Byte Buddy是java的字節碼增強器&#xff0c;一個優雅的運行時java代碼生成庫&#xff0c;使用時需要慎重 文檔地址&#xff1a;http://bytebuddy.net/#/tutorial-cn 1. 引入ByteBuddy <!-- https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy --><depend…

LeetCode---哈希表

242. 有效的字母異位詞 給定兩個字符串 s 和 t &#xff0c;編寫一個函數來判斷 t 是否是 s 的字母異位詞。 注意&#xff1a;若 s 和 t 中每個字符出現的次數都相同&#xff0c;則稱 s 和 t 互為字母異位詞。 代碼示例&#xff1a; //時間復雜度: O(n) //空間復雜度: O(1) c…

Java生成PDF筆記整理

引入依賴, groupId:com.itextpdf, version:8.0.4, artifactId如下kernel,io,layout,forms創建pdf對象try(ByteArrayOutputStream outputStream new ByteArrayOutputStream()){PdfWriter writer new PdfWriter(outputStream, new WriterProperties().setFullCompressionMode(t…

離線安裝python庫

1. 下載安裝包 在聯網機器上安裝 # 選擇符合目標架構的版本&#xff0c;主要是libc版本和python版本 pip download --platformmanylinux2010_x86_64 --only-binary:all: --python-version3.7.4 tabulate # 或者 pip download --platformmanylinux_2_5_x86_64 --only-binary:a…

do...while循環

基本語法 while循環&#xff0c;是先判斷條件再執行。 do...while循環&#xff0c;是先斬后奏&#xff0c;先至少執行一次循環語句塊中的邏輯&#xff0c;再判斷是否繼續。 do {//do while 循環語句塊; } while (bool類型的值);注意&#xff1a;do...while語句&#xff0c;存…

Common Lisp筆記

在計劃學習函數式編程的時候&#xff0c;我一開始打算學習的是 F#。因為我朋友就是在 DTU 上的學&#xff0c;F# 就是 DTU&#xff08;丹麥理工&#xff09;開發的。但是由于 F# 和微軟的 .NET 綁定&#xff0c;而在 macOS 上&#xff0c;目前版本的 .NET 的是有些問題的&#…

2020編程語言排序:探索編程界的熱門與趨勢

2020編程語言排序&#xff1a;探索編程界的熱門與趨勢 在數字時代的浪潮中&#xff0c;編程語言作為構建數字世界的基石&#xff0c;其流行度和影響力不容忽視。2020年&#xff0c;各大編程語言在各自的領域里展現出獨特的魅力和實力。本文將從四個方面、五個方面、六個方面和…

線性代數|機器學習-P3乘法和因式分解矩陣

文章目錄 1. 矩陣分解2. S Q Λ Q T SQ\Lambda Q^T SQΛQT3. A U Σ V T AU\Sigma V^T AUΣVT4. A LU 分解5. 矩陣的四個子空間 1. 矩陣分解 目前我們有很多重要的矩陣分解&#xff0c;每個分解對應于多個前提條件&#xff0c;分解方法&#xff0c;分解后的形狀會中如下&…

【Vue】v-for中的key

文章目錄 一、引入問題二、分析問題 一、引入問題 語法&#xff1a; key屬性 "唯一值" 作用&#xff1a;給列表項添加的唯一標識。便于Vue進行列表項的正確排序復用。 為什么加key&#xff1a;Vue 的默認行為會嘗試原地修改元素&#xff08;就地復用&#xff09;…

馬寶國和沈有容-UMLChina建模知識競賽第5賽季第12輪

DDD領域驅動設計批評文集 做強化自測題獲得“軟件方法建模師”稱號 《軟件方法》各章合集 參考潘加宇在《軟件方法》和UMLChina公眾號文章中發表的內容作答。在本文下留言回答。 只要最先答對前3題&#xff0c;即可獲得本輪優勝。 如果有第4題&#xff0c;第4題為附加題&am…

大模型備案語料來源安全要求

大模型備案的語料來源安全要求&#xff0c;對服務提供者的要求如下。 a&#xff09;語料來源管理方面&#xff1a; 1&#xff09;面向特定語料來源進行采集前&#xff0c;應對該來源語料進行安全評估&#xff0c;語料內容中含違法不良信息超過5%的&#xff0c;不應采集該來源…

R語言ggplot2包繪制網絡地圖

重要提示&#xff1a;數據和代碼獲取&#xff1a;請查看主頁個人信息&#xff01;&#xff01;&#xff01; 載入R包 rm(listls()) pacman::p_load(tidyverse,assertthat,igraph,purrr,ggraph,ggmap) 網絡節點和邊數據 nodes <- read.csv(nodes.csv, row.names 1) edges…

【Python技術】AI編程新手快速入門學習LangChain大模型框架

如果我們要搞AI智能體&#xff0c;普通人一般 借助騰訊元器、 coze、KIMI 或者其他大平臺搞一搞&#xff0c;比如我配置的coze智能體在微信公眾號聊天。 對于程序員來說&#xff0c;一言不合就喜歡搞代碼。 前面文章也介紹了不少關于AI知識庫問答&#xff0c;AIagent 不少開源…