《Python深度學習》第一部分讀書筆記

2022-09-20 18:09:08 字數 2361 閱讀 8255

三者關係

機器學習和深度學習的核心問題:有意義地變換資料,即學習輸入資料得有用表示(以便讓資料更接近預期輸出)

機器學習中的學習:尋找更好資料表示地自動搜尋過程。(有多種找到更好表示資料的操作,這些操作地集合稱為假設空間)

yann lecun將卷積神經網路早期思想與反向傳播演算法結合(lenet網路)應用於手寫數字分類問題。

是乙個資料容器。它包含的資料幾乎總是數值資料。張量是矩陣向任意維度的推廣(張量的維度(dimension)通常叫做軸(axis

張量是由以下三個關鍵屬性來定義的:

每個資料點被編碼為乙個向量,第乙個軸是樣本軸,第二個軸是特徵軸。

當時間對於資料很重要時,應該將資料儲存在帶有時間軸的3d張量中。(時間軸始終是第2個軸)

影象通常具有三個維度:高度、寬度和顏色深度。影象張量始終都是3d張量,灰度影象的彩色通道只有一維

張量點積

張量變形

張量運算的幾何解釋

仿射變換、旋轉、縮放等基本的幾何操作都可以表示為張量運算。

深度學習的幾何解釋

假設我們每個神經層都用下述方法對輸入資料進行變換

$$output = relu(dot(w,input)+b)

$$在此表示式中,wb都是張量,均為該層屬性。被稱為該層的權重或可訓練引數。

隨機初始化指的是開始這些權重矩陣取較小的隨機值,即wb都是隨機的。下一步是根據反饋訊號逐漸調節這些權重,這個過程叫做訓練。

訓練迴圈的過程

調整係數/權重的好方法是利用網路中所有運算都是可微的這一事實,計算損失相對於網路係數的梯度,然後向梯度的反方向改變係數,從而使損失降低。

一維損失函式曲線的隨機梯度下降

step選取合適的值相當重要,取值太小會導致迭代次數增加。取值太大會導致更新權重值之後可能會出現在曲線上完全隨機的位置。

sgd的變體與sgd的區別在於下一次權重更新時還要考慮上一次權重更新,而不是僅僅考慮當前梯度值(帶動量的sgd、adagrad、rmsprop)。這些變體叫做優化器,其中動量解決了sgd兩個問題:收斂速度和區域性極小點。

鏈式法則的過程類似於復合函式求導,將鏈式法則應用於神經網路梯度值的計算,得到的演算法叫做反向傳播演算法。反向傳播從最終損失值開始,從最頂層反向作用至最底層,利用鏈式法則計算每個引數對損失值的貢獻大小。

現代框架如tensorflow和pytorch,給定乙個運算鏈,並且已知每個運算的導數,這些框架就可以利用鏈式法則來計算這個運算鏈的梯度函式,將網路引數值對映為梯度值。

訓練神經網路的四個方面:

四者關係:多個層鏈結在一起組成了網路,將輸入資料對映為**值。然後損失函式將這些**值與目標進行比較,得到損失值,用於衡量網路**值與預期結果的匹配程度。優化器使用這個損失值來更新網路的權重。

層相容性:每一層只接受特定形狀的輸入張量,並返回特定形狀的輸出張量。

網路拓撲結構意味著將可能性空間限定為一系列特定的張量運算,將輸入資料對映為輸出資料,我們需要為這些張量運算的權重張量扎到一組合適的值。

確定網路結構後要選擇以下兩個引數:

注意:不同問題選擇目標函式的簡單指導原則:

監督學習分類主要包括分類與回歸,其變體主要包括如下幾種:

定義:智慧型體接收有關環境地資訊,學會選擇使某種獎勵最大化的行動。

開發模型時需要不斷地調節模型配置的超引數(選擇層數或每層大小),超引數需要與模型引數(權重)區分。這個調節過程需要模型在驗證資料上的效能作為反饋訊號。

三種經典的資料劃分方法:

k折驗證

帶有打亂資料的重複k折驗證

選擇模型評估方法注意的問題:

值標準化

處理缺失值:

選擇衡量成功的指標

不平衡分類問題

排序問題或多標籤分類問題

確定評估方法

準備資料

開發比基準更好的模型

擴大模型規模:開發過擬合的模型

模型正則化與調節超引數

Django學習 第一部分

建立並啟用虛擬環境後,在shell提示符這下輸入命令 pip install django 可以去看官方教程非常詳細 在教程中會引導你完成基本的輪詢應用程式的建立 它有兩部分組成 python m django versoin如果安裝了django,我們可以看到安裝的版本,如果沒有將會受到類似 no...

Axure RP 第一部分

axure rp是乙個專業的快速原型設計工具。axure 發音 ack sure 代表美國axure公司 rp則是rapid prototyping 快速原型 的縮寫。axure rp是美國axure software solution公司旗艦產品,是乙個專業的快速原型設計工具,讓負責定義需求和規格...

讀《遊戲設計模式》第一部分

第一部分位址 什麼是好的軟體架構?對我而言,好的設計意味著當我作出改動,整個程式就好像正等著這種改動。我可以僅呼叫幾個函式就完成任務,而 庫本身無需改動。評價架構設計的好壞就是評價它應對改動有多麼輕鬆。這聽起來很棒,但實際上不可行。把 寫成改動不會影響其表面上的和諧 就好。你如何處理改動?在你改動 ...