本文是參考吳恩達老師的深度學習視頻而作的筆記算法
深度學習
引言
挑戰:AI真正的挑戰在於解決那些對人類來講很容易執行,但很難形式化描述的問題,好比識別人們所說的話/圖像中的臉/分辨蘋果和梨。<br> 解決方案:讓計算機從經驗中學習,並根據層次化的概念體系理解世界,而每一個概念是經過與某些相對簡單的概念之間的關係來定義的。而如何繪製出這種關係,就是咱們常說的深度學習。機器學習
區別
機器學習:AI系統須要具有本身獲取知識的能力,即從原始數據中提取模式的能力。即研究人員不會編寫指令控制機器,而是用大量數據和算法「訓練」機器,讓機器本身學會如何執行任務。函數
參考連接學習
Octave的安裝和使用
安裝
brew update && brew upgrade brew install gcc brew install octave
注:不要安裝4.0.0版本,該版本有重大bug.spa
使用
基本操做
加、減、乘、除
// 加 1+2 // 減 6-2 // 乘 3*4 //除 1/2 // 指數運算 2^3
邏輯運算
// 相等 1 == 2 % 註釋內容 //不相等 1 ~= 2 % true // 邏輯與 1 && 0 % false // 邏輯或 1 || 0 % true // 異或 xor(1,0)
修改提示符
PS1('>> ');
變量
a = 3 a = 3; % 阻止打印輸出
打印或顯示一個變量
a disp(a)
// 顯示默認位數 format long a format short a
向量和矩陣
// 矩陣 A = [1 2; 3 4; 5 6] // 行向量 v = [1 2 3] // 列向量 v = [1; 2; 3] //矩陣的其餘生成 v = 1:0.1:2 v = 1:6 ones(2,3) C = 2*ones(2,3) w = ones(1,3) w = zeros(1,3) // 隨機矩陣,數值0-1 w = rand(3,3) // 服從正態分佈 w = randn(1,3) // w = -6 + sqrt(10)*(rand(1,10000)); // 繪製成直方圖 hist(w) hist(w,50) // 單位矩陣 I = eye(4) //幫助指令 help eye help help
移動數據
A = [1 2; 3 4; 5 6] // 矩陣維度 size(A) sz = size(A) size(sz) //A矩陣第1維度的大小 size(A,1) //A矩陣第2維度的大小 size(A,2) // 矩陣兩維度的最大值 v = [1 2 3 4] length(v) length(A)
導入數據
// 顯示當前目錄 pwd cd '' ls // 導入數據 load house.dat load price.dat // 顯示當前在內存中的變量 who // 顯示更詳細的變量信息 whos // 顯示house.dat中的數據集 house size(house) size(price) // 刪除某個變量 clear price // 清理工做空間 clear // 賦值變量 v = priceY(1:5)
導出數據
// 存入硬盤 save hello.mat v; save hello.txt v -ascii;
操做數據
索引操做
A = [1 2; 3 4; 5 6;] // 第3行第2列的元素 A(3,2) // 第2行全部元素 A(2,:) // 第1列所欲元素 A(:,1) // 第1行和第3行的全部元素 A([1 3],:) // 將A的第2列賦值成[10;11;12;] A(:,2) = [10;11;12;] // 添加第3列 A = [A, [100; 101; 102;] // 把A中全部元素放入一個單獨的列向量 A(:) // 結合矩陣 A = [1 2; 3 4; 5 6;] B = [11 12 13; 14 15 16;] C = [A B] C = [A ; B]
計算數據
A = [1 2; 3 4;5 6] B = [11 12;13 14; 15 16;] C = [1 1;2 2;] A * C // 對應元素相乘 .表示元素的運算 A.* B A. ^ 2 v = [1;2;3;] 1 ./v 1 ./A // 以e爲底,以v中元素爲指數的冪運算 exp(v) // 求絕對值 abs(v) // v的相反數 -v // 向量每一個元素都加1 v + ones(length(v),1) v + 1 // 轉置 A A' a = [1 15 2 0,5] val = max(a) [val, ind] = max(a) // 每列的最大值 max(A) a = [1 15 2 0.5] a < 5 // 找出小於3的元素並返回索引 find(a < 3) // 任意行列對角線中的元素加起來都等於相同的值 A = magic(3) //r 行 c列 [r,c] = find(A >= 7) // 求和函數 a sum(a) // 相乘函數 prod(a) // 向下取整 floor(a) //向上取整 ceil(a) // A的逆矩陣 A = magic(3) pinv(A)
數據繪製
t = [0; 0.01;0.98]; t y1 = sin(2*pi*4*t); plot(t,y1); y2 = cos(2*pi*4*t); plot(t,y2); plot(t,y1); hold on; plot(t,y2,'r'); xlabel('time') ylabel('value') legend('sin','cos') title('my plot') print -dpng 'myplot.png' help plot close // figure(1): plot(t,y1); figure(2): plot(t,y2); subplot(1,2,1); plot(t,y1); subplot(1,2,2); plot(t,y2); // A = magic(5) imagesc(A) imagesc(A),colorbar,colormap gray;
控制語句
for循環
v = zeros(10,1) for i = 1:10. v(i) = 2^i; end;
while循環
v while i <= 5. v(i) = 100; i = i + 1; end; while true. v(i) = 999; i = i + 1; if i == 6. break; end; end;
if條件語句
if v(1) == 1. disp('The value is one'); elseif v(1) == 2. disp('The value is two'); else disp('The value is not one or two'); end;
函數
squareThisNumber(2) [a,b] = squareAndCubeThisNumber(5)