20180421 qzd

ch02 - 使用python制作神经网络

构建框架

初始化函数 -- 设定输入层节点、隐藏层节点和输出层节点的数量。

训练 -- 学习给定训练集样本后,优化权重(权重--网络的核心)。

查询 -- 给定输入,从输出节点给出答案。

#neural network class definition

class neuralNetwork:

#initialise the neural network

def __init__():

pass

#train the neural network

def train():

pass

#query the neural network

def query():

pass

初始化网络

def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate ):

权重 -- 网络的核心

在输入层与隐藏层之间的链接权重矩阵W input_hidden,大小为hidden_nodes乘以input_nodes。

在隐藏层和输出层之间的链接权重矩阵W hidden_output,大小为hidden_nodes乘以output_nodes。

初始化权重

#self.wih = (np.random.rand(self.hnodes,self.inodes) - 0.5)

#self.who = (np.random.rand(self.onodes,self.hnodes) - 0.5)

self.wih = np.random.normal(0.0,pow(self.hnodes,-0.5),(self.hnodes,self.inodes))

self.who = np.random.normal(0.0,pow(self.onodes,-0.5),(self.onodes,self.hnodes))

查询网络

def query(self,inputs_list):

训练网络(权重部分)

第一部分,针对给定的训练样本计算输出。这与我们刚刚在query()函数上所做的没什么区别。

第二部分,将计算得到的输出与所需输出对比,使用差值来指导网络权重的更新。

完整的神经网络代码

import numpy as np

#scipy.special for the sigmoid function expit()

import scipy.special

#neural network class definition

class neuralNetwork:

#initialise the neural network

def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate ):

#set number of nodes in each input, hidden, output layer

self.inodes = inputnodes

self.hnodes = hiddennodes

self.onodes = outputnodes

#link weight matrices, wih and who

#weights inside the arrays are w_i_j, where link is from node i to node j in the next layer

# w11 w21

# w12 w22 etc

#self.wih = (np.random.rand(self.hnodes,self.inodes) - 0.5)

#self.who = (np.random.rand(self.onodes,self.hnodes) - 0.5)

self.wih = np.random.normal(0.0,pow(self.hnodes,-0.5),(self.hnodes,self.inodes))

self.who = np.random.normal(0.0,pow(self.onodes,-0.5),(self.onodes,self.hnodes))

#learning rate

self.lr = learningrate

#activation function is the sigmoid function

self.activation_function = lambda x:scipy.special.expit(x)

pass

#train the neural network

def train(self,inputs_list,targets_list):

#convert inputs list to 2d array

inputs = np.array(inputs_list,ndmin=2).T

targets = np.array(targets_list,ndmin=2).T

#calculate signals into hidden layer

hidden_inputs = np.dot(self.wih,inputs)

#calculate the signals emerging from hidden layer

hidden_outputs = self.activation_function(hidden_inputs)

#calculate signals into final output layer

final_inputs = np.dot(self.who,hidden_outputs)

#calculate the signals emerging from final output layer

final_outputs = self.activation_function(final_inputs)

#output layer error is the (target - actual)

output_errors = targets - final_outputs

#hidden layer error is the output_errors, split by weights, recombined at hidden nodes

hidden_errors = np.dot(self.who.T,output_errors)

#update the weights for the links between thehidden and output layers

self.who += self.lr *np.dot((output_errors * final_outputs*(1.0-final_outputs)), np.transpose(hidden_outputs))

#update the weights for the links between the input and hidden layers

self.wih += self.lr *np.dot((hidden_errors * hidden_outputs*(1.0 - hidden_outputs)),np.transpose(inputs))

pass

#query the neural network

def query(self,inputs_list):

#convert inputs list to 2d array

inputs = np.array(inputs_list,ndmin=2).T

#calculate signals into hidden layer

hidden_inputs = np.dot(self.wih,inputs)

#calculate the signals emerging from hidden layer

hidden_outputs = self.activation_function(hidden_inputs)

#calculate signals into final output layer

final_inputs = np.dot(self.who,hidden_outputs)

#calculate the signals emerging from final output layer

final_outputs = self.activation_function(final_inputs)

return final_outputs

#number of input, hidden and output nodes

input_nodes = 3

hidden_nodes = 3

output_nodes = 3

#learning rate is 0.3

learning_rate = 0.3

#create instance of neural network

n = neuralNetwork(input_nodes,hidden_nodes,output_nodes,learning_rate)

n.query([1.0,0.5,-1.5])

输出结果

array([[ 0.46356062],

[ 0.58538226],

[ 0.5905356 ]])

python制作神经网络_python_deeplearning02_使用python制作神经网络相关推荐

  1. python神经网络编程 pdf下载_Python神经网络编程 PDF 高质量完整版

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python.神经网络.Python编程方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小11.5 MB,塔里克·拉希德编写,目 ...

  2. 猴子?狒狒?傻傻分不清楚——制作tfrecord数据集并利用卷积神经网络训练实例

    去年年底学习了深度学习的相关知识,但是寒假回来之后忘得也差不多了...为了巩固下所学知识,近期利用卷积神经网络做了一个小实例.卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题 ...

  3. python神经网络编程 豆瓣,python神经网络图像分类

    1.如何利用python实现神经网络 官方不支持,建议等支持吧. dll有自己版本对应的,必须使用专门为python3.4编译的dll(cv2.pyd),你拿python2.7的肯定用不了. 如果非要 ...

  4. Python深度学习之搭建小型卷积神经网络(Kaggle网站Dogs-vs-Cats数据集)

    完全来源与<Python深度学习>中的例子,仅供学习只用. Cats vs. Dogs(猫狗大战)是Kaggle大数据竞赛的数据集,数据集由训练数据和测试数据组成,训练数据包含猫和狗各12 ...

  5. [Python人工智能] 一.TensorFlow环境搭建及神经网络入门

    从本篇文章开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.第一篇文章主要讲解神经网络基础概念,同时讲解TensorFlow2.0的安装过程及基础用法,主要结合作者之前的博客和& ...

  6. 使用python自己搭建一个简单的BP神经网络

    from numpy import exp,array,random,dot #import randomclass NeuralNetwork(object):def __init__(self): ...

  7. python调用报表制作工具_使用Python轻松制作漂亮的表格

    Python太有用而且很方便 图表可以用matplotlib轻松制作,数值计算只要有numpy就行. 最近,Python被广泛用于机器学习系统的研究,甚至还能制作游戏. 我突然想知道:"是否 ...

  8. grad在python什么模块_深度学习(Deep Learning)基础概念1:神经网络基础介绍及一层神经网络的python实现...

    此专栏文章随时更新编辑,如果你看到的文章还没写完,那么多半是作者正在更新或者上一次没有更新完,请耐心等待,正常的频率是每天更新一篇文章. 该文章是"深度学习(Deep Learning)&q ...

  9. python神经网络调节参数_神经网络进阶-用python实现一个完整的神经网络框架并在CIFAR10数据集上调参...

    上一个博客中讲解了用python实现一个简单的两层神经网络,我们是把所有的网络层都直接写在了类中.但是作为一个神经网络框架,网络的结构应该是可以由使用者自定义的,这样一来也就不用为每个网络结构都重写所 ...

最新文章

  1. FFmpeg通过摄像头实现对视频流进行解码并显示测试代码(新接口)
  2. 独家 | 全面!手把手教你决策树可视化(附链接代码)
  3. 依赖类型dependency type在maven中的作用
  4. 一步一步webpart-webpart如何得到?(2)
  5. Unity游戏开发——C#特性Attribute与自动化
  6. springMVC 前后台日期格式传值解决方式之二(共二) @InitBinder的使用
  7. centOS 6.0无法运行dump指令的解决方法
  8. android语音识别和合成第三方
  9. 2db多少功率_话筒的灵敏度:-58dB+(-)2dB表示什么意思,数字大的好,还是小的好呢?...
  10. 十大注意事项 防止系统重装时遭遇病毒
  11. Windowstelnet服务怎么开启 Win11telnet服务怎么开启详细介绍
  12. 20190818 On Java8 第八章 复用
  13. 【HDU1251+POJ2001+POJ3630】单词前缀问题整理
  14. mysql删除源码_mysql关于删除的命令实例源码删除数据库数据表等
  15. 国际h2真假u盘测试软件,u盘速度测试软件H2TEST
  16. 几种直方图均衡方法汇总
  17. 前端json文件模拟数据与后台交互
  18. Guass消元 poj 1830
  19. 【电脑一点通】如何快速切换Windows应用窗口
  20. 盘点2018年化工行业大事故!回顾那些令人心痛的瞬间......

热门文章

  1. 三代纠错软件LoRDEC安装和使用(0.6版本)
  2. java获取文件的所有者_java获取文件夹下所有文件的名称 | 星尘
  3. TensorFlow基础5-可训练变量和自动求导机制
  4. Linux环境编译qtmqtt,qtmqttclient
  5. 衡量微型计算机的性能指标参数有哪些,衡量计算机性能的主要技术指标有哪些?...
  6. tf.keras.activations.sigmoid 激活函数 示例
  7. python ffmpeg 视频转图片 视频转音频 播放音频 多张图片+音频转视频 多个视频合成一个视频 改变视频播放速度
  8. np.reshape()用法
  9. U-NET 图像预处理
  10. Linux/ubuntu server 18.04 安装远程桌面--vnc server