• (1)本文的实现为仅有一个隐层的输入层-隐层-输出层的三层简单神经网络

  • (2)因为模型较为简单,参数较少,权值矩阵的更新我们采用的数值分析的方式,而不是反向传播。

import numpy as np
import operator
import random
import matplotlib.pyplot as plt# S 型函数
def sigmoid(z):return 1./(1.+np.exp(-z))# 定义 list 的内积运算
def inner_prod(w, x):return reduce(operator.add, map(operator.mul, w, x))# 单个神经元
def neuron(w, x):return sigmoid(w[0] + inner_prod(w[1:], x))# 判别函数
def h(ws, x):hidden1 = neuron(ws[:3], x)hidden2 = neuron(ws[3:6], x)return neuron(ws[6:], [hidden1, hidden2])INPUTS = [[0, 0], [0, 1], [1, 0], [1, 1]]
OUTPUTS = [0, 1, 1, 0]# 代价函数(全部样本)
def cost(ws):return 1./2*sum((h(ws, x)-y)**2 for x, y in zip(INPUTS, OUTPUTS))# 数值分析的方式计算偏导
def partial(f, k, ws):ws_plus, ws_minus = ws[:], ws[:]epsilon = 0.01ws_plus[k] += epsilonws_minus[k] -= epsilonreturn (f(ws_plus)-f(ws_minus))/2/epsilon# 梯度下降求解最优化(最小化)问题
def gradient_descent(cost, eta, n):costs = []ws = [random.random()*2-1 for _ in xrange(9)]for iter in xrange(n):c = cost(ws)print 'iter: ', iter, ', cost: ', ccosts.append(c)grad = [partial(cost, k, ws) for k in xrange(9)]ws = [ws[k]-eta*grad[k] for k in xrange(9)]return ws, costsdef main():ws, costs = gradient_descent(cost, 0.1, 10000)print '\nFinal cost:', cost(ws)print '\nFinal weights:', wsprint '\nPrediction: ', [h(ws, x) for x in INPUTS]plt.plot(np.array(costs))plt.xlabel('iteration')plt.ylabel('cost')plt.show()
if __name__ == '__main__':main()

注:因为数据量较小,所以会对权值矩阵的初始化以及学习率 η\eta 的设置较为敏感,如果学习速率较低,可适当增加学习率。

深度学习实践指南(五)—— 求解异或问题相关推荐

  1. 深度学习实践指南(六)—— ReLU(前向和后向过程)

    def relu_forward(x):out = x * (x > 0) # * 对于 np.ndarray 而言表示 handmard 积,x > 0 得到的 0和1 构成的矩阵ret ...

  2. 深度学习实践指南(四)—— 一个典型的深度学习的实践流程

    我们以 Exercise:Sparse Autoencoder 的流程为例,加以阐述: Step 1: Generate training set(生成训练集) Step 2: Sparse auto ...

  3. 深度学习实践指南(三)—— 参数(超参)及数据集的处理

    0. 超参 maximum number of epochs learning rates network architecture 1. 参数的维度信息 对于 CIFAR-10 的图像识别问题而言, ...

  4. 深度学习实践指南(二)—— 符号编程

    参数化模型(parameterized model)是符号(symbol 或者叫 variable)编程的基石,参数对应与符号编程的符号. 首先定义符号,也即变量,直接对符号进行数学运算刻画符号间的关 ...

  5. 深度学习实践指南(一)—— 卷积和池化

    详细信息请见 Convolutional Neural Networks (LeNet) 卷积: from theano.tensor.nnet import conv2d 池化 from thean ...

  6. Python Web 深度学习实用指南:第一、二部分

    原文:Hands-On Python Deep Learning for the Web 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑 ...

  7. PyTorch深度学习实践

    根据学习情况随时更新. 2020.08.14更新完成. 参考课程-刘二大人<PyTorch深度学习实践> 文章目录 (一)课程概述 (二)线性模型 (三)梯度下降算法 (四)反向传播 (五 ...

  8. 谷歌大脑深度学习炼丹指南出炉,Hinton点赞!

    编辑 | 机器之心 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[全栈算法]技术交流群 「大量的实践经验已被提炼成这份强大的深度学习 ...

  9. Python Web 深度学习实用指南:第三部分

    原文:Hands-On Python Deep Learning for the Web 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑 ...

最新文章

  1. SameNameFile 比较两个文件夹是否同名
  2. java cas volatile_每日一个知识点:Volatile 和 CAS 的弊端之总线风暴
  3. 编写安全 PHP 应用程序的七个习惯
  4. linux git 搭建 debian,基于Debian Linux搭建Git服务器
  5. A Zero Flow Entry Expiration Timeout P4 Switch
  6. python zip压缩_用Python处理ZIP压缩包
  7. 也许你看了一本假的天龙八部
  8. (二)office2016-excel冻结窗格
  9. Elastic-Job使用
  10. springboot整合任务安全
  11. 2022年京东平台休闲食品的年度总销量超6亿件,同比增长6.5%
  12. 数据结构——栈的基本操作
  13. 简要分析一年期人民币零存整取
  14. kaggle平台介绍
  15. 车牌识别,移植到android系统
  16. (从完全入门开始)思科模拟器创建校园网,第一次写博客
  17. 【论文阅读笔记】A Multi-Task Learning Formulation for Predicting Disease Progression
  18. 企业网络搭建与应用-交换机的配置与管理
  19. 【论文阅读】Learning with Hypergraphs: Clustering, Classification, and Embedding
  20. 谈一谈GVRP协议与VTP协议

热门文章

  1. 页面报错500是什么意思_解决方案:品牌备案后,上传产品报错5461,A+页面报错...
  2. Doris支持spark导入设计文档
  3. Flume的开发之 自定义 source 自定义 sink 自定义拦截器
  4. Flume之介绍 核心组件 可靠性 恢复性
  5. HIve之DML 聚合分组应用函数 静动态分区表
  6. python里面if语句一直出错_python错误,写了个小程序,if语句总是不执行,求高手指点...
  7. 第八届蓝桥杯第五题取数位
  8. GDAL学习笔记——OGR投影
  9. TensorFlow入门篇(一):搭建简单的线性拟合例子
  10. Blog运用感想 (ZT)