IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 吴恩达机器学习第五周编程作业 ex4 -> 正文阅读

[人工智能]吴恩达机器学习第五周编程作业 ex4

一、前言

????????此时此刻,我正处于第五周课程的复习阶段,刚刚完成了折磨我整整三天的ex4,提交作业成绩:100。

个人认为ex4的难点在于:(1) 矩阵运算的深刻理解????? (2)反向传播算法的细节

所以如果您也正在或即将学习反向传播算法这一part,并且看完一两遍课程发现还是不会写代码,请不用担心,因为很正常!行得通的解决办法就是结合正确答案,反复看课程补全自己对于反向传播算法过程、细节上没能理解到位的地方。这个过程中您将收获对于反向传播算法的细节,矩阵运算的宏观理解,以及一份 “痛,并说不上很快乐” 的回忆。

二、代码部分

sigmoidGradient.m

g = sigmoid(z) .* ( 1 - sigmoid(z) );

randInitializeWeights.m

init_epsilon = 0.02;   % 我也不知道该设置多大数量级,所以随便写了一个0.02,
                       % 感觉这个数量级应该合理
W = rand(L_out , 1 + L_in) * (2 * init_epsilon) - init_epsilon;

nnCostFunction.m

a1 = [ones(size(X,1),1) , X];   %5000 * 401  input layer
z2 = Theta1 * a1';            %25 * 5000
a2 = [ones(size(z2',1),1) , sigmoid(z2')];  %5000 * 26   hidden layer
z3 = Theta2 * a2';           %10 * 5000
a3 = sigmoid(z3);           % 10 * 5000  output layer (i.e. h)

h = a3;     % h: 10 * 5000  y: 5000 * 1

y_label = zeros(size(h',1) , num_labels);  % 5000 * 10
for i = 1:m
    y_label(i , y(i)) = 1;
end 

% 最终 10 个输出节点
J = (-1/m) * sum(sum((log(h) .* y_label') + log(1 - h) .* (1 - y_label')))...
    +(lambda/(2 * m)) * ( sum(sum(Theta1(:,2:end) .^2))+ sum(sum(Theta2(:,2:end) .^2)) );

delta_3 = h' - y_label;     % 5000 * 10   output layer (i.e. h)

delta_2 = delta_3 * Theta2(:,2:end) .* sigmoidGradient(z2');  
delta_2 = delta_2';      %25 * 5000

Delta_1 = zeros(size(Theta1));   % 25 * 401
Delta_2 = zeros(size(Theta2));   % 10 * 26
Delta_1 = Delta_1 + delta_2 * a1;   % 25 * 401
Delta_2 = Delta_2 + delta_3' * a2;   % 10 * 26   delta_3:5000 * 10    a2: 5000 * 26

Theta1_grad = (1/m) * Delta_1 + lambda/m * Theta1;   % 25 *401
Theta2_grad = (1/m) * Delta_2 + lambda/m * Theta2;   % 10 * 26
Theta1_grad(:,1) = 1 / m * Delta_1(:,1);
Theta2_grad(:,1) = 1 / m * Delta_2(:,1);
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:20:38  更:2021-08-08 11:23:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 22:35:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码