Octave的安装

Stella981
• 阅读 515

本文是参考吴恩达老师的深度学习视频而做的笔记

深度学习

引言

挑战:AI真正的挑战在于解决那些对人类来说很容易执行,但很难形式化描述的问题,比如识别人们所说的话/图像中的脸/分辨苹果和梨。
解决方案:让计算机从经验中学习,并根据层次化的概念体系理解世界,而每个概念是通过与某些相对简单的概念之间的关系来定义的。而如何绘制出这种关系,就是我们常说的深度学习

区别

机器学习:AI系统需要具备自己获取知识的能力,即从原始数据中提取模式的能力。即研究人员不会编写指令控制机器,而是用大量数据和算法“训练”机器,让机器自己学会如何执行任务。

参考链接

Octave的安装和使用

安装

    brew update && brew upgrade
    brew install gcc
    brew install octave

注:不要安装4.0.0版本,该版本有重大bug.

使用

基本操作

加、减、乘、除
    // 加
    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)
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
AI研习丨针对长尾数据分布的深度视觉识别
  !(http://dingyue.ws.126.net/2020/0812/714a3e94j00qey3su000xd000q100dup.jpg)  摘要  本文介绍了目前国内外关于长尾数据分布下深度视觉识别的研究进展,主要从常用数据集及应用、经典机器学习解决方案和深度学习解决方案三个维度进行梳理和分析,并针对长尾数据分布的
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这