打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
R语言13行代码实现神经网络

参考自11行python
以及吴恩达老师的机器学习
http://blog.csdn.net/sadfasdgaaaasdfa/article/details/47185199

还是有些地方有些疑惑。例如误差反向传递回去的推倒还不太明白。

x <- data.frame(c(0,0,1),c(0,1,1),c(1,0,1),c(1,1,1))y <- c(0,1,1,0)x <- as.matrix(t(x))syn0 <- matrix(rnorm(3 * col ),ncol=3,nrow=3)syn1 <- matrix(rnorm(3 * 1 ),ncol=3,nrow=1)for (i in 1:10000){  l1 <- 1/(1+exp(-(x %*% t(syn0) )))  l2 <- 1/(1+exp(-(l1)  %*% t(syn1) ))  errorOutput <- l2 - y  errorHidder <- errorOutput %*% syn1 * l1  * (1-l1 )  syn1 <- syn1 -  t(0.01 * t(l1) %*% errorOutput )  syn0 <- syn0 - t(0.01 * t(x) %*% errorHidder) }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

运行结果

#nnetOneLayer <- function(x,y,numberofUnits = 3,alpha = 0.01,iter=10000){  x <- as.matrix(t(x))  # x的特征数量  col <- ncol(x)  #0-1的权重初始化 nrow 表示特征数  syn0 <- matrix(rnorm(numberofUnits * col ),ncol=col,nrow=numberofUnits)  #1-2的权重初始化  syn1 <- matrix(rnorm(numberofUnits * 1 ),ncol=(numberofUnits),nrow=1)  cost <- c(NA)  length(cost) <- iter  for (i in 1:iter){    #输入层到隐层的值    l1 <- 1/(1+exp(-(x %*% t(syn0) )))    #隐层到输出层的值    l2 <- 1/(1+exp(-(l1)  %*% t(syn1) ))    #输出层误差    errorOutput <- l2 - y    #隐层误差    errorHidder <- errorOutput %*% syn1 * l1  * (1-l1 )    #    syn1 <- syn1 -  t(alpha * t(l1) %*% errorOutput )    syn0 <- syn0 - t(alpha * t(x) %*% errorHidder)     cost[i] <- errorOutput  }  plot(cost)  cbind(y,l2)}x <- data.frame(c(0,0,1),c(0,1,1),c(1,0,1),c(1,1,1))y <- c(0,1,1,0)nnetOneLayer(x,y)l2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

真实结果与预测结果

 0 0.01942965 1 0.95005097 1 0.96147338 0 0.06028846
  • 1
  • 2
  • 3
  • 4

cost函数随着迭代的变化

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
R语言学习-基础篇1
R语言基础知识——子集的提取(2)
C++之重载数组下标[]与圆括号()运算符的方法 – 春风细雨's Blog
[转载]R语言矩阵运算
R语言中管道操作符 %>%, %T>%, %$% 和 %<>%
R Study Note 9 - factor
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服