使用2层隐层,使用sigmoid和ReLU激活。

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlineinput = np.array([[0, 0], [0, 1], [1, 1], [1, 0]])  # 4 * 2
target = np.array([0, 1, 0, 1]).reshape(4, 1)  # 4 * 1
# input = (input - np.mean(input)) / np.std(input)
# target = (target - np.mean(target)) / np.std(target)epochs = 100000
lr = 0.01num_node_1 = 3
num_node_2 = 4number = 4
W1 = np.random.randn(2, num_node_1) / np.sqrt(number)
W2 = np.random.randn(num_node_1, num_node_2) / np.sqrt(number)
W3 = np.random.randn(num_node_2, 1) / np.sqrt(number)
b1 = np.zeros((1, num_node_1))
b2 = np.zeros((1, num_node_2))
b3 = np.zeros((1, 1))loss = []
result = []
for epoch in range(epochs):# forwardhidden1_ = np.dot(input, W1) + b1hidden1 = 1 / (np.exp(-1 * hidden1_) + 1)hidden2_ = np.dot(hidden1, W2) + b2
#     hidden2 = 1 / (np.exp(-1 * hidden2_) + 1)hidden2 = np.maximum(hidden2_, 0)output_ = np.dot(hidden2, W3) + b3output = 1 / (np.exp(-1 * output_) + 1)result.append(output)# compute the gradienterror = 0.5 * np.sum((output - target) * (output - target))loss.append(error)#     if epoch % 5000 == 0:#         print(error)#         print(np.round(output, 2))dout = (output - target) * (1 - output) * outputdW3 = np.dot(hidden2.T, dout)db3 = np.sum(dout, axis=0)dhidden2 = np.dot(dout, W3.T) * (hidden2 >= 0)dW2 = np.dot(hidden1.T, dhidden2)db2 = np.sum(dhidden2, axis=0)dhidden1 = np.dot(dhidden2, W2.T) * (1 - hidden1) * hidden1dW1 = np.dot(input.T, dhidden1)db1 = np.sum(dhidden1, axis=0)# backwardW3 -= lr * dW3b3 -= lr * db3W2 -= lr * dW2b2 -= lr * db2W1 -= lr * dW1b1 -= lr * db1plt.plot(loss)

一个2层隐层神经网络解决抑或问题相关推荐

  1. 深度学习笔记:手写一个单隐层的神经网络

    出处:数据科学家养成记 深度学习笔记2:手写一个单隐层的神经网络 笔记1中我们利用 numpy 搭建了神经网络最简单的结构单元:感知机.笔记2将继续学习如何手动搭建神经网络.我们将学习如何利用 num ...

  2. BP算法总结+从输入-隐层-输出的逐步手推

    1 BP算法总结 BP算法:bp算法实际上是在神经网络中寻找在合适条件下的最佳权重和bais.实际上是利用输出后的误差来估计输出层前一层的误差,再用这层误差来估计更前一层误差,如此获取所有各层误差估计 ...

  3. 神经网络结构设计指导原则——输入层:神经元个数=feature维度 输出层:神经元个数=分类类别数,默认只用一个隐层 如果用多个隐层,则每个隐层的神经元数目都一样...

    神经网络结构设计指导原则 原文   http://blog.csdn.net/ybdesire/article/details/52821185 下面这个神经网络结构设计指导原则是Andrew NG在 ...

  4. 理解单隐层ReLU神经网络的全局损失

    摘要   对于单一隐层ReLU神经网络,我们展示在每个可微区间内都是全局极小值.这些局部极小是否唯一可微,取决于数据,隐藏神经元的激活模式,网络大小.我们给出一个是否局部极小值存在它们的定义的区域内的 ...

  5. 实验二 单隐层神经网络

    一.实验目的 (1)学习并掌握常见的机器学习方法: (2)能够结合所学的python知识实现机器学习算法: (3)能够用所学的机器学习算法解决实际问题. 二.实验内容与要求 (1)掌握神经网络的基本原 ...

  6. Python实现BP神经网络ANN单隐层回归模型项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 20世纪80年代中期,David Runelhart.Geoff ...

  7. Python实现BP神经网络ANN单隐层分类模型项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 BP(back propagation)神经网络是1986年由R ...

  8. 神经网络 深度神经网络,双隐层神经网络结构

    如何创建两个隐藏层的BP神经网络 我自己的总结是:1,隐层的神经网络算法1.1构造方法选择首先使用三个隐藏层的数量来确定三个隐藏层数找到的最小值和最大值的值,然后从最小来验证模型的预测误差,直到它达到 ...

  9. 神经网络超参数之隐藏层个数+每个隐层的神经元数

    神经网络超参数之隐藏层个数+每个隐层的神经元数 隐藏层个数 神经网络的灵活性也恰好是它的一个主要的短板:有太多的超参数需要调整.不仅仅是可以使用的网络拓扑结构(神经元是如何彼此互相连接的),即使是简单 ...

最新文章

  1. 开发日记-20190428
  2. BZOJ4238 : 电压
  3. 盘点:2020年PMCAFF最受欢迎的文章!
  4. Xamarin截取/删除emoji表情bug解决方案
  5. 数据管理流程,基础入门简介
  6. arcgis 10.1 导入数据到oracle 发布地图服务
  7. 投影仪与计算机连接方式,电脑怎么接投影仪教程 简单三步教你搞定
  8. 机器视觉入门,网友推荐的书目
  9. TLQ的安装路径不存在或不正确
  10. 电路原理 的 一些基础知识
  11. 如何查询SCI检索号?
  12. 【Day3.3】美攻铁道市场零距离接触行驶中的火车
  13. latex 参考文献显示问号_回「LaTeX 的罪与罚」
  14. 【图文并茂】六十多个 vscode 插件,助你打造最强编辑器
  15. virtualenv简单使用
  16. verilog基础---uart协议解析
  17. Java 打 jar 包的几种方式详解
  18. Opera 使用迅雷下载
  19. YAML标准(什么是yaml)
  20. 时区+0800 CST 与+0805 LMT转换

热门文章

  1. 医用钢丝圈套的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. 常见颜色RGB值,有图。
  3. 速卖通教你如何提升店铺转化率——测评补单
  4. 给你一个团队,你应该怎么管?制度是绝情的,管理是无情的,执行是合情的
  5. NUCLEO-F401RE
  6. 【树莓派】树莓派TXD、RXD的配置与使用可实现与STM32的通信
  7. 拍照怎么测量尺寸?这些方法可以了解一下
  8. NO2/*学习记录*/--模仿百度首页(纯HTML+css)
  9. 汽车之家字体加密破解(CSS样式反爬)
  10. 1亿数据 redis 内存_Redis10亿数据量只需要100MB内存,为什么这么牛?