BP神经网络——Python简单实现三层神经网络(Numpy)

Python012

BP神经网络——Python简单实现三层神经网络(Numpy),第1张

我们将在Python中创建一个NeuralNetwork类,以训练神经元以给出准确的预测。该课程还将具有其他帮助程序功能。

1. 应用Sigmoid函数

我们将使用 Sigmoid函数 (它绘制一条“ S”形曲线)作为神经网络的激活函数。

2. 训练模型

这是我们将教神经网络做出准确预测的阶段。每个输入将具有权重(正或负)。

这意味着具有大量正权重或大量负权重的输入将对结果输出产生更大的影响。

我们最初是将每个权重分配给一个随机数。

本文参考翻译于此网站 —— 原文

下面是函数实现的代码部分:

clc

clear all

close all

%% 加载神经网络的训练样本 测试样本每列一个样本 输入P 输出T,T是标签

%样本数据就是前面问题描述中列出的数据

%epochs是计算时根据输出误差返回调整神经元权值和阀值的次数

load data

% 初始隐层神经元个数

hiddennum=31

% 输入向量的最大值和最小值

threshold=[0 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1]

inputnum=size(P,1)% 输入层神经元个数

outputnum=size(T,1)% 输出层神经元个数

w1num=inputnum*hiddennum% 输入层到隐层的权值个数

w2num=outputnum*hiddennum% 隐层到输出层的权值个数

N=w1num+hiddennum+w2num+outputnum%待优化的变量的个数

%% 定义遗传算法参数

NIND=40%个体数目

MAXGEN=50%最大遗传代数

PRECI=10%变量的二进制位数

GGAP=0.95%代沟

px=0.7%交叉概率

pm=0.01%变异概率

trace=zeros(N+1,MAXGEN)%寻优结果的初始值

FieldD=[repmat(PRECI,1,N)repmat([-0.50.5],1,N)repmat([1011],1,N)]%区域描述器

Chrom=crtbp(NIND,PRECI*N)%初始种群

%% 优化

gen=0%代计数器

X=bs2rv(Chrom,FieldD)%计算初始种群的十进制转换

ObjV=Objfun(X,P,T,hiddennum,P_test,T_test)%计算目标函数值

while gen