人工神经网络算法基本原理
人工神经网络算法原理示意图
人工神经网络算法原理说明
1、人工神经网络整体分为输入层、隐藏层、输出层,另外除了输出层外,其余各层皆存在一个偏置项(可以理解为截距)。
2、其中最底层为输入层,输入层向隐藏层第一层各个神经元提供入参,并且每个入参都有各自的权重(上图终端Wi-j-k)。
3、隐藏层的每一个小的单元结构成为神经元,包含STEP1求和、STEP2激活函数,激活函数的结果用于计算为下层输入的入参。
4、不断向下一层输入,直至输出层,输出层即为目标结果
5、结果到达输出层后,将输出结果与训练集目标进行比较,并根据存在的误差(损失函数),进行反向调优(反向传播),不断逐级更新各层的权重Wi-j-k
6、循环迭代以上过程,输出最终的模型
人工神经网络代码demo
1、导入相关包
import numpy as np
from sklearn.linear_model import Perceptron
import tensorflow as tf
from tensorflow import keras
2、准备数据(训练集、验证集、测试集),这里用内置的fashion_mnist数据集
fashion_mnist=keras.datasets.fashion_mnist
(X_train_full,y_train_full),(X_test,y_test)=fashion_mnist.load_data()
#设置验证集
x_valid,X_train=X_train_full[:5000]/255.0,X_train_full[5000:]/255.0
y_valid,y_train=y_train_full[:5000]/2,y_train_full[5000:]/2
class_names=["T-shirt","Trouser","Pullover","Dress","Coat","sandal","shirt","Sneaker","bag","abkel boot"]#这里class_names用于与目标标签对应,例如2对应Pullover,0对应T-shirt
3、创建神经网络模型,并设置相关的参数(因为我们是对不同的穿戴物品做分类,且各类物品互斥,所以我们可以用softmax函数作为最后一层的激活函数,从而输出结果为各分类可能的概率,且和为1)
model=keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[28,28]))#输入shape为28*28矩阵
model.add(keras.layers.Dense(300,activation="relu"))#activation即为激活函数
model.add(keras.layers.Dense(100,activation="relu"))
model.add(keras.layers.Dense(10,activation="softmax"))
#最后一层Dense层即为输出层
4、指定损失函数及优化器
model.compile(loss="sparse_categorical_crossentropy",optimizer=keras.optimizers.SGD(learning_rate=0.005),metrics=["accuracy"])
5、模型训练
history=model.fit(X_train,y_train,epochs=30,validation_data=(x_valid,y_valid))