程序实现 softmax classifier, 含有一个隐含层的情况。activation function 是 ReLU : f(x)=max(0,x)

f1=w1x+b1

h1=max(0,f1)

f2=w2h1+b2

y=ef2i∑jef2j


  1. function Out=Softmax_Classifier_1(train_x, train_y, opts)
  2. % setting learning parameters
  3. step_size=opts.step_size;
  4. reg=opts.reg;
  5. batchsize = opts.batchsize;
  6. numepochs = opts.numepochs;
  7. K=opts.class;
  8. h=opts.hidden;
  9. D=size(train_x, 2);
  10. W1=0.01*randn(D,h);
  11. b1=zeros(1,h);
  12. W2=0.01*randn(h, K);
  13. b2=zeros(1,K);
  14. loss(1 : numepochs)=0;
  15. num_examples=size(train_x, 1);
  16. numbatches = num_examples / batchsize;
  17. for epoch=1:numepochs
  18. kk = randperm(num_examples);
  19. loss(epoch)=0;
  20. % % tic;
  21. % %
  22. % % sprintf('epoch %d: \n' , epoch)
  23. for bat=1:numbatches
  24. batch_x = train_x(kk((bat - 1) * batchsize + 1 : bat * batchsize), :);
  25. batch_y = train_y(kk((bat - 1) * batchsize + 1 : bat * batchsize), :);
  26. %% forward
  27. f1=batch_x*W1+repmat(b1, batchsize, 1);
  28. hiddenval_1=max(0, f1);
  29. scores=hiddenval_1*W2+repmat(b2, batchsize, 1);
  30. %% the loss
  31. exp_scores=exp(scores);
  32. dd=repmat(sum(exp_scores, 2), 1, K);
  33. probs=exp_scores./dd;
  34. correct_logprobs=-log(sum(probs.*batch_y, 2));
  35. data_loss=sum(correct_logprobs)/batchsize;
  36. reg_loss=0.5*reg*sum(sum(W1.*W1))+0.5*reg*sum(sum(W2.*W2));
  37. loss(epoch) =loss(epoch)+ data_loss + reg_loss;
  38. %% back propagation
  39. dscores = probs-batch_y;
  40. dscores=dscores/batchsize;
  41. dW2=hiddenval_1'*dscores;
  42. db2=sum(dscores);
  43. dhiddenval_1=dscores*W2';
  44. mask=max(sign(hiddenval_1), 0);
  45. df_1=dhiddenval_1.*mask;
  46. dW1=batch_x'*df_1;
  47. db1=sum(df_1);
  48. %% update
  49. dW2=dW2+reg*W2;
  50. dW1=dW1+reg*W1;
  51. W1=W1-step_size*dW1;
  52. b1=b1-step_size*db1;
  53. W2=W2-step_size*dW2;
  54. b2=b2-step_size*db2;
  55. end
  56. loss(epoch)=loss(epoch)/numbatches;
  57. if (mod(epoch, 10)==0)
  58. sprintf('epoch: %d, training loss is %f: \n', epoch, loss(epoch))
  59. end
  60. toc;
  61. end
  62. Out.W1=W1;
  63. Out.b1=b1;
  64. Out.b2=b2;
  65. Out.W2=W2;
  66. Out.loss=loss;
  67. end

机器学习 Softmax classifier (一个隐含层)的更多相关文章

  1. 机器学习 Softmax classifier (无隐含层)

    程序实现 Softmax classifer, 没有隐含层, f=wx+b y=efi∑jefj %% Softmax classifier function Out=Softmax_Classifi ...

  2. 基于MNIST数据集使用TensorFlow训练一个包含一个隐含层的全连接神经网络

    包含一个隐含层的全连接神经网络结构如下: 包含一个隐含层的神经网络结构图 以MNIST数据集为例,以上结构的神经网络训练如下: #coding=utf-8 from tensorflow.exampl ...

  3. ubuntu之路——day13 只用python的numpy在较为底层的阶段实现单隐含层神经网络

    首先感谢这位博主整理的Andrew Ng的deeplearning.ai的相关作业:https://blog.csdn.net/u013733326/article/details/79827273 ...

  4. 机器学习: Softmax Classifier (三个隐含层)

    程序实现 softmax classifier, 含有三个隐含层的情况.activation function 是 ReLU : f(x)=max(0,x) f1=w1x+b1 h1=max(0,f1 ...

  5. 机器学习:Softmax Classifier (两个隐含层)

    程序实现 softmax classifier, 含有两个隐含层的情况.activation function 是 ReLU : f(x)=max(0,x) f1=w1x+b1 h1=max(0,f1 ...

  6. 基于MNIST数据集使用TensorFlow训练一个没有隐含层的浅层神经网络

    基础 在参考①中我们详细介绍了没有隐含层的神经网络结构,该神经网络只有输入层和输出层,并且输入层和输出层是通过全连接方式进行连接的.具体结构如下: 我们用此网络结构基于MNIST数据集(参考②)进行训 ...

  7. 理解dropout——本质是通过阻止特征检测器的共同作用来防止过拟合 Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了

    理解dropout from:http://blog.csdn.net/stdcoutzyx/article/details/49022443 http://www.cnblogs.com/torna ...

  8. [DeeplearningAI笔记]序列模型2.6Word2Vec/Skip-grams/hierarchical softmax classifier 分级softmax 分类器

    5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.6 Word2Vec Word2Vec相对于原先介绍的词嵌入的方法来说更加的简单快速. Mikolov T, Chen ...

  9. MLP神经网络 隐含层节点数的设置】如何设置神经网络隐藏层 的神经元个数

    神经网络 隐含层节点数的设置]如何设置神经网络隐藏层 的神经元个数 置顶 2017年10月24日 14:25:07 开心果汁 阅读数:12968    版权声明:本文为博主原创文章,未经博主允许不得转 ...

随机推荐

  1. 洛谷 P1755 斐波那契的拆分

    P1755 斐波那契的拆分 题目背景 无 题目描述 已知任意一个正整数都可以拆分为若干个斐波纳契数,现在,让你求出n的拆分方法 输入输出格式 输入格式: 一个数t,表示有t组数据 接下来t行,每行一个 ...

  2. gerrit-申请id跟本地配置

    OpenID 是一个以用户为中心的数字身份识别框架,它具有开放.分散.自由等特性. 什么是gerrit? 看 了网上的介绍,感觉所谓的gerrit就是一个基于web实现代码管理的服务器.Gerrit ...

  3. python 的 reshape强制转换格式的用途

    shu=[[ 0.03046758], [ 0.05485586], [ 0.03282908], [ 0.02107211], [ 0.0391144 ], [ 0.07847244], [ 0.1 ...

  4. idea 配置文件导出,导入

    俗话说的好,磨刀不误砍柴工.配置好自己的工具,这样撸码就会更爽. 来来来,傻瓜式配图开始. 点击后会出现有一个导出设置框默认为全部导出 点击...处 可设置导出的settings.jar包的位置 在新 ...

  5. VUE错误记录 - 品牌后台练习 search(); 数组 splice forEach push 箭头函数

    methods:{ add(){ var car = { id: this.id, name: this.name, ctime: new Date()}; this.list.push(car); ...

  6. hibernate 注解配置<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/X

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  7. [置顶] WebService学习总结(4)——第三方webService服务调用

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

  8. 为easyUI的dataGrid加入自己的查询框

    dataGrid作为easyUI的一个核心组件,其功能上是非常强大的. 可是外观上似乎就有点差强人意了,首先说一下我对dataGrid外观的2点感受 1.图标不好看,且尺寸非常小(16x16)-- 关 ...

  9. HTTP网络协议(五)

    主动攻击:是指攻击通过直接访问Web应用,把攻击代码传入的攻击模式,该模式是直接针对服务器上的资源进行攻击,因此攻击者需要能够访问到那些资源,例如:SQL注入攻击和OS命令注入攻击.  被动攻击:是指 ...

  10. 8、for 、emumrate、range、if

    1.for循环用户按照顺序循环可迭代对象中的内容,PS:break.continueli = [11,22,33,44]for item in li: print item 2.enumrate 为可 ...