本文是参考吴恩达老师的深度学习视频而作的笔记算法
深度学习
引言
挑战: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)