神经网络与深度学习这本书是我学习深度学习的启蒙教材,感兴趣可以到链接出下载。通过一段时间的学习,感觉基本理解了梯度下降算法和反向传播算法,于是尝试着自己写代码来实现神经网络。一开始总是很难的,所以我设计了个非常简单的目标,训练一个神经元。比如我给他输入1,我期望它输出0,这就是一个反相器。我希望它能做到这一点,所以我对他进行训练。
训练一个神经元能简化梯度下降算法和反向传播算法的实现,也能帮助我们更好的理解升经这两个算法。对于初学深度学习的人来说,勇敢的迈出第一步非常的重要,因此,如果你能成功的训练一个神经元,那也意味着你在深度学习的学习中迈出了重要的一步。
关于梯度下降算法和反向传播算法,还是需要你认真阅读推荐的书籍,这两个算法是深度学习的基石,一定要彻底弄懂才行。
如果在网页上代码不太好看,你可以在这里下载源码:
源码
首先定义一个神经元类:
public class NeureCell {
private double w = 0;
private double b = 0;
private double out = 0;
private int in = 0;
public void setIn(int in){
this.in = in;
}
public void setWandB(double w,double b){
this.w = w;
this.b = b;
}
public double getW(){return w;}
public d