Octave的安裝

本文是參考吳恩達老師的深度學習視頻而作的筆記算法

深度學習

引言

挑戰: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)
相關文章
相關標籤/搜索