题目:BP神经网络分类器
一、实验项目: BP神经网络对鸢尾花进行分类
二、实验目的:
掌握BP神经网络学习算法,利用BP神经网络进行数据分类
三、实验内容:
1、编程实现BP神经网络算法
2、建立三层BP神经网络,节点个数、参数自拟
3、选择iris-人工神经网络.txt中的一部分数据集作为训练集,通过训练集对BP神经网络的连接权重进行学习
4、记录实验数据(连接权值的变化、迭代次数、总的误差变化)
5、用剩下的数据集作为测试集,验证学习的效果
四、实验要求:
1、画出实验所用的BP神经网络的结构图
2、附上主体代码清单
3、写清楚实验步骤和实验结果
4、调节参数后,得到不同的实验数据,对数据进行分析


代码:
import numpy as np
import pandas as pd
'''
构建一个具有1个隐藏层的神经网络,隐层的大小为5
输入层为2个特征,输出层为2个分类
0为第一类,1为第二类
'''
# 1.初始化参数
def initialize_parameters(n_x, n_h, n_y):
np.random.seed(2)
# 权重和偏置矩阵
w1 = np.random.randn(n_h, n_x) * 0.01
b1 = np.zeros(shape=(n_h, 1))
w2 = np.random.randn(n_y, n_h) * 0.01
b2 = np.zeros(shape=(n_y, 1))
print('输入层与隐含层之间的初始权值:')
print(w1)
print('输入层与隐含层之间的初始偏置:')
print(b1)
print('隐含层与输出层之间的初始权值:')
print(w2)
print('隐含层与输出层之间的初始偏置:')
print(b2)
# 通过字典存储参数
parameters = {
'w1': w1, 'b1': b1, 'w2': w2, 'b2': b2}
return parameters
# 2.前向传播
def forward_propagation(X, parameters):
w1 = parameters['w1']
b1 = parameters['b1']
w2 = parameters['w2']
b2 = parameters['b2']
# 通过前向传播来计算a2
z1 = np.dot(w1, X) + b1 # 这个地方需注意矩阵加法:虽然(w1*X)和b1的维度不同,但可以相加
a1 = np.tanh(z1) # 使用tanh作为第一层的激活函数
z2 = np.dot(w2, a1) + b2
a2 = 1 / (1 + np.exp(-z2)) # 使用sigmoid作为第二层的激活函数
# 通过字典存储参数
cache = {
'z1': z1, 'a1': a1, 'z2': z2, 'a2': a2}
return a2, cache
# 3.计算代价函数
def compute_cost(a2, Y, parameters):
m = Y.shape[

本文介绍使用BP神经网络对鸢尾花数据集进行分类的实验,详细讲解了BP神经网络的学习算法,包括参数初始化、前向传播、计算代价函数、反向传播和参数更新等步骤,并展示了实验结果。
最低0.47元/天 解锁文章
9770

被折叠的 条评论
为什么被折叠?



