导航:首页 > 网络安全 > 如何编神经网络网络代码

如何编神经网络网络代码

发布时间:2022-06-26 18:40:21

Ⅰ 用matlab编BP神经网络预测代码

matlab编写BP神经网络很方便的,这个工作不用像编程序的C什么的那样还要编写算法
这个算法早已经在软件的库里提供了。你只要用一条语句就出来了。把参数,深度和节点固定的往里一代数就可以了。
还有一点,注意最后结果的收敛性,神经网络发展一直是曲折前进的,为什么这样,现在不太给力,因为面临着一个收敛的问题,实现起来效果不好。这些程序网上有很多,你借一本基本的神经网络的书里面也有。望采纳。

如何用70行java代码实现深度神经网络算法

神经网络结构如下图所示,最左边的是输入层,最右边的是输出层,中间是多个隐含层,对于隐含层和输出层的每个神经节点,都是由上一层节点乘以其权重累加得到,标上“+1”的圆圈为截距项b,对输入层外每个节点:Y=w0*x0+w1*x1+...+wn*xn+b,由此我们可以知道神经网络相当于一个多层逻辑回归的结构。
import java.util.Random;
public class BpDeep{
public double[][] layer;//神经网络各层节点
public double[][] layerErr;//神经网络各节点误差
public double[][][] layer_weight;//各层节点权重
public double[][][] layer_weight_delta;//各层节点权重动量
public double mobp;//动量系数
public double rate;//学习系数

public BpDeep(int[] layernum, double rate, double mobp){
this.mobp = mobp;
this.rate = rate;
layer = new double[layernum.length][];
layerErr = new double[layernum.length][];
layer_weight = new double[layernum.length][][];
layer_weight_delta = new double[layernum.length][][];
Random random = new Random();
for(int l=0;l<layernum.length;l++){
layer[l]=new double[layernum[l]];
layerErr[l]=new double[layernum[l]];
if(l+1<layernum.length){
layer_weight[l]=new double[layernum[l]+1][layernum[l+1]];
layer_weight_delta[l]=new double[layernum[l]+1][layernum[l+1]];
for(int j=0;j<layernum[l]+1;j++)
for(int i=0;i<layernum[l+1];i++)
layer_weight[l][j][i]=random.nextDouble();//随机初始化权重
}
}
}
//逐层向前计算输出
public double[] computeOut(double[] in){
for(int l=1;l<layer.length;l++){
for(int j=0;j<layer[l].length;j++){
double z=layer_weight[l-1][layer[l-1].length][j];
for(int i=0;i<layer[l-1].length;i++){
layer[l-1][i]=l==1?in[i]:layer[l-1][i];
z+=layer_weight[l-1][i][j]*layer[l-1][i];
}
layer[l][j]=1/(1+Math.exp(-z));
}
}
return layer[layer.length-1];
}
//逐层反向计算误差并修改权重
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;j<layerErr[l].length;j++)
layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);

while(l-->0){
for(int j=0;j<layerErr[l].length;j++){
double z = 0.0;
for(int i=0;i<layerErr[l+1].length;i++){
z=z+l>0?layerErr[l+1][i]*layer_weight[l][j][i]:0;
layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j][i]+rate*layerErr[l+1][i]*layer[l][j];//隐含层动量调整
layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隐含层权重调整
if(j==layerErr[l].length-1){
layer_weight_delta[l][j+1][i]= mobp*layer_weight_delta[l][j+1][i]+rate*layerErr[l+1][i];//截距动量调整
layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距权重调整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//记录误差
}
}
}

public void train(double[] in, double[] tar){
double[] out = computeOut(in);
updateWeight(tar);
}
}

Ⅲ matlab中用RBF神经网络做预测的代码怎么

clc;

clearall;

closeall;

%%----

c_1=[00];

c_2=[11];

c_3=[01];

c_4=[10];

n_L1=20;%numberoflabel1

n_L2=20;%numberoflabel2

A=zeros(n_L1*2,3);

A(:,3)=1;

B=zeros(n_L2*2,3);

B(:,3)=0;

%createrandompoints

fori=1:n_L1

A(i,1:2)=c_1+rand(1,2)/2;

A(i+n_L1,1:2)=c_2+rand(1,2)/2;

end

fori=1:n_L2

B(i,1:2)=c_3+rand(1,2)/2;

B(i+n_L2,1:2)=c_4+rand(1,2)/2;

end

%showpoints

scatter(A(:,1),A(:,2),[],'r');

holdon

scatter(B(:,1),B(:,2),[],'g');

X=[A;B];

data=X(:,1:2);

label=X(:,3);

%%Usingkmeanstofindcintervector

n_center_vec=10;

rng(1);

[idx,C]=kmeans(data,n_center_vec);

holdon

scatter(C(:,1),C(:,2),'b','LineWidth',2);

%%Calulatesigma

n_data=size(X,1);

%calculateK

K=zeros(n_center_vec,1);

fori=1:n_center_vec

K(i)=numel(find(idx==i));

end

%

%thencalucatesigma

sigma=zeros(n_center_vec,1);

fori=1:n_center_vec

[n,d]=knnsearch(data,C(i,:),'k',K(i));

L2=(bsxfun(@minus,data(n,:),C(i,:)).^2);

L2=sum(L2(:));

sigma(i)=sqrt(1/K(i)*L2);

end

%%Calutateweights

%kernelmatrix

k_mat=zeros(n_data,n_center_vec);

fori=1:n_center_vec

r=bsxfun(@minus,data,C(i,:)).^2;

r=sum(r,2);

k_mat(:,i)=exp((-r.^2)/(2*sigma(i)^2));

end

W=pinv(k_mat'*k_mat)*k_mat'*label;

y=k_mat*W;

%y(y>=0.5)=1;

%y(y<0.5)=0;

%%

[W1,sigma1,C1]=RBF_training(data,label,10);

y1=RBF_predict(data,W,sigma,C1);

[W2,sigma2,C2]=lazyRBF_training(data,label,2);

y2=RBF_predict(data,W2,sigma2,C2);

(3)如何编神经网络网络代码扩展阅读

matlab的特点

1、具有完备的图形处理功能,实现计算结果和编程的可视化;

2、友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

3、功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。

Ⅳ 神经网络在训练权值和阈值时先给定初始值,然后根据误差最小进行训练,这类训练代码怎么编写呀

例采用动量梯度下降算法训练BP网络。
训练样本定义如下:
输入矢量为
p =[-1 -2 3 1
-1 1 5 -3]
目标矢量为 t = [-1 -1 1 1]
解:本例的MATLAB程序如下:

close all
clear
echo on
clc
% NEWFF——生成一个新的前向神经网络
% TRAIN——对BP神经网络进行训练
% SIM——对BP神经网络进行仿真
pause
% 敲任意键开始
clc
% 定义训练样本
% P为输入矢量
P=[-1, -2, 3, 1; -1, 1, 5, -3];
% T为目标矢量
T=[-1, -1, 1, 1];
pause;
clc
% 创建一个新的前向神经网络
net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')
% 当前输入层权值和阈值
inputWeights=net.IW{1,1}
inputbias=net.b{1}
% 当前网络层权值和阈值
layerWeights=net.LW{2,1}
layerbias=net.b{2}
pause
clc
% 设置训练参数
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
pause
clc
% 调用TRAINGDM算法训练BP网络
[net,tr]=train(net,P,T);
pause
clc
% 对BP网络进行仿真
A = sim(net,P)
% 计算仿真误差
E = T - A
MSE=mse(E)
pause
clc
echo off

Ⅳ 如何用9行Python代码编写一个简易神经网络

python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写。python在生物信息、统计、网页制作、计算等多个领域都体现出了强大的功能。python和其他脚本语言如java、R、Perl 一样,都可以直接在命令行里运行脚本程序。工具/原料
python;CMD命令行;windows操作系统
方法/步骤
1、首先下载安装python,建议安装2.7版本以上,3.0版本以下,由于3.0版本以上不向下兼容,体验较差。

2、打开文本编辑器,推荐editplus,notepad等,将文件保存成 .py格式,editplus和notepad支持识别python语法。
脚本第一行一定要写上 #!usr/bin/python
表示该脚本文件是可执行python脚本
如果python目录不在usr/bin目录下,则替换成当前python执行程序的目录。
3、编写完脚本之后注意调试、可以直接用editplus调试。调试方法可自行网络。脚本写完之后,打开CMD命令行,前提是python 已经被加入到环境变量中,如果没有加入到环境变量,请网络

4、在CMD命令行中,输入 “python” + “空格”,即 ”python “;将已经写好的脚本文件拖拽到当前光标位置,然后敲回车运行即可。

Ⅵ 如何用70行Java代码实现深度神经网络算法

参考下面代码:
import java.util.Random;
public class BpDeep{
public double[][] layer;//神经网络各层节点
public double[][] layerErr;//神经网络各节点误差
public double[][][] layer_weight;//各层节点权重
public double[][][] layer_weight_delta;//各层节点权重动量
public double mobp;//动量系数
public double rate;//学习系数

public BpDeep(int[] layernum, double rate, double mobp){
this.mobp = mobp;
this.rate = rate;
layer = new double[layernum.length][];
layerErr = new double[layernum.length][];
layer_weight = new double[layernum.length][][];
layer_weight_delta = new double[layernum.length][][];
Random random = new Random();
for(int l=0;l<layernum.length;l++){
layer[l]=new double[layernum[l]];
layerErr[l]=new double[layernum[l]];
if(l+1<layernum.length){
layer_weight[l]=new double[layernum[l]+1][layernum[l+1]];
layer_weight_delta[l]=new double[layernum[l]+1][layernum[l+1]];
for(int j=0;j<layernum[l]+1;j++)
for(int i=0;i<layernum[l+1];i++)
layer_weight[l][j][i]=random.nextDouble();//随机初始化权重
}
}
}
//逐层向前计算输出
public double[] computeOut(double[] in){
for(int l=1;l<layer.length;l++){
for(int j=0;j<layer[l].length;j++){
double z=layer_weight[l-1][layer[l-1].length][j];
for(int i=0;i<layer[l-1].length;i++){
layer[l-1][i]=l==1?in[i]:layer[l-1][i];
z+=layer_weight[l-1][i][j]*layer[l-1][i];
}
layer[l][j]=1/(1+Math.exp(-z));
}
}
return layer[layer.length-1];
}
//逐层反向计算误差并修改权重
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;j<layerErr[l].length;j++)
layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);

while(l-->0){
for(int j=0;j<layerErr[l].length;j++){
double z = 0.0;
for(int i=0;i<layerErr[l+1].length;i++){
z=z+l>0?layerErr[l+1][i]*layer_weight[l][j][i]:0;
layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j][i]+rate*layerErr[l+1][i]*layer[l][j];//隐含层动量调整
layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隐含层权重调整
if(j==layerErr[l].length-1){
layer_weight_delta[l][j+1][i]= mobp*layer_weight_delta[l][j+1][i]+rate*layerErr[l+1][i];//截距动量调整
layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距权重调整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//记录误差
}
}
}

public void train(double[] in, double[] tar){
double[] out = computeOut(in);
updateWeight(tar);
}
}

Ⅶ 2输入2输出,bp神经网络MATLAB代码,怎么编写

k=0:1:6000;
w=0.03*k*pi/180;
x=0.4+0.2*cos(w);
z=0.2+0.2*sin(w);
y1=-atan(x/z)+acos(sqrt(1-(x.^2+z.^2-0.07).^2/(0.36*x.^2+0.36*z.^2)));
y2=asin((0.25-x.^2-z.^2)/0.24)-pi;
[input,minI,maxI,output,minO,maxO]=premnmx([x,z]',[y1,y2]');%进行归一化处理
net=newff(minmax(input),[2,10,2],{'tansig','tansig','purelin'},'traingd');
net.trainParam.show=100;
net.trainParam.Lr=0.05;
net.trainParam.epochs=6000;
net.trainParam.goal=1e-4;
net=train(net,input,output);
output=sim(net,input);
postmnmx(output,minO,maxO);
plot(k,y1,k,y2);

%说明:x和z为输入,y1和y2为输出,对输入进行了归一化处理,并将两个输出构成一个矩阵output,相当于输入变成了input,输出变成了output,

Ⅷ 如何用70行Java代码实现神经网络算法

如何用70行Java代码实现神经网络算法
import java.util.Random;
public class BpDeep{
public double[][] layer;//神经网络各层节点
public double[][] layerErr;//神经网络各节点误差
public double[][][] layer_weight;//各层节点权重
public double[][][] layer_weight_delta;//各层节点权重动量
public double mobp;//动量系数
public double rate;//学习系数

public BpDeep(int[] layernum, double rate, double mobp){
this.mobp = mobp;
this.rate = rate;
layer = new double[layernum.length][];
layerErr = new double[layernum.length][];
layer_weight = new double[layernum.length][][];
layer_weight_delta = new double[layernum.length][][];
Random random = new Random();
for(int l=0;l<layernum.length;l++){
layer[l]=new double[layernum[l]];
layerErr[l]=new double[layernum[l]];
if(l+1<layernum.length){
layer_weight[l]=new double[layernum[l]+1][layernum[l+1]];
layer_weight_delta[l]=new double[layernum[l]+1][layernum[l+1]];
for(int j=0;j<layernum[l]+1;j++)
for(int i=0;i<layernum[l+1];i++)
layer_weight[l][j][i]=random.nextDouble();//随机初始化权重
}
}
}
//逐层向前计算输出
public double[] computeOut(double[] in){
for(int l=1;l<layer.length;l++){
for(int j=0;j<layer[l].length;j++){
double z=layer_weight[l-1][layer[l-1].length][j];
for(int i=0;i<layer[l-1].length;i++){
layer[l-1][i]=l==1?in[i]:layer[l-1][i];
z+=layer_weight[l-1][i][j]*layer[l-1][i];
}
layer[l][j]=1/(1+Math.exp(-z));
}
}
return layer[layer.length-1];
}
//逐层反向计算误差并修改权重
public void updateWeight(double[] tar){
int l=layer.length-1;
for(int j=0;j<layerErr[l].length;j++)
layerErr[l][j]=layer[l][j]*(1-layer[l][j])*(tar[j]-layer[l][j]);

while(l-->0){
for(int j=0;j<layerErr[l].length;j++){
double z = 0.0;
for(int i=0;i<layerErr[l+1].length;i++){
z=z+l>0?layerErr[l+1][i]*layer_weight[l][j][i]:0;
layer_weight_delta[l][j][i]= mobp*layer_weight_delta[l][j][i]+rate*layerErr[l+1][i]*layer[l][j];//隐含层动量调整
layer_weight[l][j][i]+=layer_weight_delta[l][j][i];//隐含层权重调整
if(j==layerErr[l].length-1){
layer_weight_delta[l][j+1][i]= mobp*layer_weight_delta[l][j+1][i]+rate*layerErr[l+1][i];//截距动量调整
layer_weight[l][j+1][i]+=layer_weight_delta[l][j+1][i];//截距权重调整
}
}
layerErr[l][j]=z*layer[l][j]*(1-layer[l][j]);//记录误差
}
}
}

public void train(double[] in, double[] tar){
double[] out = computeOut(in);
updateWeight(tar);
}
}

Ⅸ 如何自己动手写卷积神经网络代码

没有卷积神经网络的说法,只有卷积核的说法。电脑图像处理的真正价值在于:一旦图像存储在电脑上,就可以对图像进行各种有效的处理。如减小像素的颜色值,可以解决曝光过度的问题,模糊的图像也可以进行锐化处理,清晰的图像可以使用模糊处理模拟摄像机滤色镜产生的柔和效果。用Photoshop等图像处理,施展的魔法几乎是无止境的。四种基本图像处理效果是模糊、锐化、浮雕和水彩。?这些效果是不难实现的,它们的奥妙部分是一个称为卷积核的小矩阵。这个3*3的核含有九个系数。为了变换图像中的一个像素,首先用卷积核中心的系数乘以这个像素值,再用卷积核中其它八个系数分别乘以像素周围的八个像素,最后把这九个乘积相加,结果作为这个像素的值。对图像中的每个像素都重复这一过程,对图像进行了过滤。采用不同的卷积核,就可以得到不同的处理效果。?用PhotoshopCS6,可以很方便地对图像进行处理。模糊处理——模糊的卷积核由一组系数构成,每个系数都小于1,但它们的和恰好等于1,每个像素都吸收了周围像素的颜色,每个像素的颜色分散给了它周围的像素,最后得到的图像中,一些刺目的边缘变得柔和。锐化卷积核中心的系数大于1,周围八个系数和的绝对值比中间系数小1,这将扩大一个像素与之周围像素颜色之间的差异,最后得到的图像比原来的图像更清晰。浮雕卷积核中的系数累加和等于零,背景像素的值为零,非背景像素的值为非零值。照片上的图案好像金属表面的浮雕一样,轮廓似乎凸出于其表面。要进行水彩处理,首先要对图像中的色彩进行平滑处理,把每个像素的颜色值和它周围的二十四个相邻的像素颜色值放在一个表中,然后由小到大排序,把表中间的一个颜色值作为这个像素的颜色值。然后用锐化卷积核对图像中的每个像素进行处理,以使得轮廓更加突出,最后得到的图像很像一幅水彩画。我们把一些图像处理技术结合起来使用,就能产生一些不常见的光学效果,例如光晕等等。希望我能帮助你解疑释惑。

Ⅹ 如何用代码编写一个神经网络异或运算器

配置环境、安装合适的库、下载数据集……有时候学习深度学习的前期工作很让人沮丧,如果只是为了试试现在人人都谈的深度学习,做这些麻烦事似乎很不值当。但好在我们也有一些更简单的方法可以体验深度学习。近日,编程学习平台 Scrimba 联合创始人 Per Harald Borgen 在 Medium 上发文介绍了一种仅用30行 JavaScript 代码就创建出了一个神经网络的教程,而且使用的工具也只有 Node.js、Synaptic.js 和浏览器而已。另外,作者还做了一个交互式 Scrimba 教程,也许能帮你理解其中的复杂概念。

Synaptic.js:http://synaptic.juancazala.com

Node.js:http://nodejs.org

Scrimba 教程:http://scrimba.com/casts/cast-1980

Synaptic.js 让你可以使用 Node.js 和浏览器做深度学习。在这篇文章中,我将介绍如何使用 Synaptic.js 创建和训练神经网络。

//创建网络const { Layer, Network }= window.synaptic;var inputLayer = new Layer(2);var hiddenLayer = new Layer(3);var outputLayer = new Layer(1);

inputLayer.project(hiddenLayer);

hiddenLayer.project(outputLayer);var myNetwork = new Network({

input: inputLayer,

hidden:[hiddenLayer],

output: outputLayer

});//训练网络——学习异或运算var learningRate =.3;for (var i =0; i <20000; i++)

{//0,0=>0

myNetwork.activate([0,0]);

myNetwork.propagate(learningRate,[0]);//0,1=>1

myNetwork.activate([0,1]);

myNetwork.propagate(learningRate,[1]);//1,0=>1

myNetwork.activate([1,0]);

myNetwork.propagate(learningRate,[1]);//1,1=>0

myNetwork.activate([1,1]);

myNetwork.propagate(learningRate,[0]);

}//测试网络console.log(myNetwork.activate([0,0]));//[0.0]console.log(myNetwork.activate([0,1]));//[0.]console.log(myNetwork.activate([1,0]));//[0.]console.log(myNetwork.activate([1,1]));//[0.0]

我们将创建一个最简单的神经网络:一个可以执行异或运算的网络。上面就是这个网络的全部代码,但在我们深入解读这些代码之前,首先我们先了解一下神经网络的基础知识。

神经元和突触

神经网络的基本构造模块是神经元。神经元就像是一个函数,有几个输入,然后可以得到一个输出。神经元的种类有很多。我们的网络将使用 sigmoid 神经元,它可以输入任何数字并将其压缩到0 到1 之间。下图就是一个 sigmoid 神经元。它的输入是5,输出是1。箭头被称为突触,可以将该神经元与网络中的其它层连接到一起。

现在训练这个网络:

// train the network - learn XORvar learningRate =.3;for (var i =0; i <20000; i++){ //0,0=>0

myNetwork.activate([0,0]);

myNetwork.propagate(learningRate,[0]);//0,1=>1

myNetwork.activate([0,1]);

myNetwork.propagate(learningRate,[1]);//1,0=>1

myNetwork.activate([1,0]);

myNetwork.propagate(learningRate,[1]);//1,1=>0

myNetwork.activate([1,1]);

myNetwork.propagate(learningRate,[0]);

}

这里我们运行该网络20000次。每一次我们都前向和反向传播4 次,为该网络输入4 组可能的输入:[0,0][0,1][1,0][1,1]。

首先我们执行 myNetwork.activate([0,0]),其中[0,0]是我们发送给该网络的数据点。这是前向传播,也称为激活这个网络。在每次前向传播之后,我们需要执行反向传播,这时候网络会更新自己的权重和偏置。

反向传播是通过这行代码完成的:myNetwork.propagate(learningRate,[0]),其中 learningRate 是一个常数,给出了网络每次应该调整的权重的量。第二个参数0 是给定输入[0,0]对应的正确输出。

然后,该网络将自己的预测与正确的标签进行比较,从而了解自己的正确程度有多少

然后网络使用这个比较为基础来校正自己的权重和偏置值,这样让自己的下一次猜测更加正确一点。

这个过程如此反复20000次之后,我们可以使用所有四种可能的输入来检查网络的学习情况:

->[0.0]console.log(myNetwork.activate([0,1]));

->[0.]console.log(myNetwork.activate([1,0]));

->[0.]console.log(myNetwork.activate([1,1]));

->[0.0]

如果我们将这些值四舍五入到最近的整数,我们就得到了正确的异或运算结果。

这样就完成了。尽管这仅仅只碰到了神经网络的表皮,但也足以帮助你进一步探索 Synaptic 和继续学习了。http://github.com/cazala/synaptic/wiki 这里还包含了更多好教程。

阅读全文

与如何编神经网络网络代码相关的资料

热点内容
盐城计算机网络设备选购推荐 浏览:876
移动基站影响手机网络怎么办 浏览:99
网络信号问题怎么办 浏览:956
我的网络怎么输入不了密码 浏览:818
网络密码改法 浏览:682
哪里有自己的网络地址 浏览:340
学网络营销课程有什么好处 浏览:889
电视网络密码写在哪里的 浏览:725
网络小说里的金陵是哪里 浏览:149
电脑使用网络的应用 浏览:952
网络安全手抄报怎么写二年级 浏览:853
网络无线插卡路由器 浏览:627
手机克隆蓝牙和网络哪个快 浏览:343
网络主播带货都是哪里的货 浏览:201
安卓蜂窝移动网络在哪里 浏览:727
网络连接需要登录怎么操作 浏览:768
长沙网络安全it培训入行门槛低 浏览:951
网络机顶盒哪个牌子好用不卡顿 浏览:597
网络下载文字有换行怎么替换 浏览:910
网络用语dm是什么意思 浏览:175

友情链接