function train(hidden_size, lr)
% 完整训练过程实现
%
% :param hidden_size: 隐藏层单元个数
% :param lr: 学习率
% 程序实现1:参数设置(可以尝试自己修改)=====================================
input_size = 784;
output_size = 10;
train_num = 60000;
epoch = 5;
batch_size = 100;
log_freq = 100;
steps_per_epoch = train_num / batch_size;
% 程序结束1=================================================================
% 读取mnist数据集
[test_x, test_y, train_x, train_y] = read_mnist();
% 初始化权重值
W1 = normrnd(0, 1e-2, [input_size, hidden_size]);
b1 = zeros(1, hidden_size);
W2 = normrnd(0, 1e-2, [hidden_size, output_size]);
b2 = zeros(1, output_size);
% log
loss_list = zeros(epoch * steps_per_epoch, 1);
err_list = zeros(epoch * steps_per_epoch, 1);
times = 1;
% 迭代训练
for i=1:epoch
% 程序实现2:随机小批量训练集读取========================================
% 提示:可以了解一下randperm函数
for j=1:steps_per_epoch
train_data =
train_label =
% 程序结束2==============================================================
% 单步训练,权重更新
[loss, score, W1, b1, W2, b2] = train_step(train_data, train_label, W1, b1, W2, b2, lr);
% log
% 程序实现3:计算错误率==============================================
err =
% 程序结束3=========================================================
loss_list(times) = loss;
err_list(times) = err;
if mod(times, log_freq) == 0
fprintf('epoch: %2d | steps: %6d | loss: %6.4f | error: %.4f\n', i, times, loss, err);
end
times = times + 1;
end
end
% 输出训练结果
save weights.mat W1 b1 W2 b2
log_steps = 1:epoch * steps_per_epoch;
figure();
plot(log_steps, loss_list)
title('loss curve')
xlabel('steps')
ylabel('loss')
figure();
plot(log_steps, err_list);
title('error curve')
xlabel('steps')
ylabel('error')
% 请记录下你的隐藏层个数和学习率=============================================
% hidden size =
% learning rate =
%==========================================================================
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
softmax分类损失后向传播函数 **程序实现** - [x] softmax分类损失后向传播 ## 3.3 softmax_forward.m softmax分类损失前向传播函数 **程序实现**: - [x] softmax分类损失前向传播 ## 3.4 test.m 网络模型测试函数 **程序实现**: - [x] 网络构建,测试错误率计算 ## 3.5 train.m 完整训练过程实现函数 **程序实现**: - [x] 参数设置(可以尝试自己修改) - [x] 随机小批量训练集读取 - [x] 计算错误率 - [x] 记录下使用的隐藏层个数和学习率 ## 3.6 train_step.m 一层隐藏层人工神经网络单步训练的实现 **程序实现**: - [x] 人工神经网络的的前向传播 - [x] 人工神经网络的的后向传播 - [x] 梯度下降
资源推荐
资源详情
资源评论
收起资源包目录
ANN_Homework.zip (12个子文件)
ANN_Homework
train.m 2KB
说明.md 9KB
misc
计算图.png 36KB
线性组合计算图.png 20KB
神经元连接.png 61KB
ANN结构.png 17KB
read_mnist.m 460B
train_step.m 1KB
mnist_uint8.mat 14.05MB
test.m 310B
softmax_backward.m 340B
softmax_forward.m 334B
共 12 条
- 1
资源评论
振华OPPO
- 粉丝: 39w+
- 资源: 571
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功