人工智能基础及应用 第7章 7-1 神经元学习例子-源码_第1页
人工智能基础及应用 第7章 7-1 神经元学习例子-源码_第2页
人工智能基础及应用 第7章 7-1 神经元学习例子-源码_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7-1神经元学习例子实验环境实验支持在多种平台上运行,包括但不限于个人电脑(PC)、服务器以及云环境。用户需要确保已经安装了Python环境,并安装了NumPy和matplotlib等必要的库。实验代码可以编写在Python脚本文件中,或者在支持Python的集成开发环境(IDE,如PyCharm、VSCode等)中编写和运行。源码importnumpyasnp

#初始化权重和偏置

weights_input_to_hidden_a=np.array([[0.3]])

bias_hidden_a=np.array([0.1])

weights_hidden_a_to_hidden_bc=arr=np.array([[0.4,0.6]])

bias_hidden_bc=np.array([0.1,0.1])

weights_hidden_bc_to_output=np.array([[0.2],[0.7]])

bias_output=np.array([0.1])

#设置训练参数

learning_rate=np.array([[0.1]])#学习率

e_min=0.0001#误差阈值

max_iterations=2000#训练轮次

#训练数据

x=np.array([[1]])

y=np.array([[5]])

#激活函数及其导数

defrelu(x):

returnnp.maximum(0,x)

defrelu_derivative(x):

return(x>0).astype(int)

#前向传播

defforward_pass(x):

hidden_a_input=np.dot(x,weights_input_to_hidden_a)+bias_hidden_a

hidden_a_output=relu(hidden_a_input)

hidden_bc_input=np.dot(hidden_a_output,weights_hidden_a_to_hidden_bc)+bias_hidden_bc

hidden_bc_output=relu(hidden_bc_input)

output_input=np.dot(hidden_bc_output,weights_hidden_bc_to_output)+bias_output

output=relu(output_input)

returnoutput,hidden_bc_output,hidden_a_output

#损失函数

defcompute_loss(y_pred,y_true):

return0.5*np.sum((y_pred-y_true)**2)

defbackward_pass(y_pred,y_true,hidden_bc_output,hidden_a_output):

#输出层的梯度

output_error=y_pred-y_true

d_output=output_error*relu_derivative(y_pred)

#隐藏层到输出层的权重梯度

grad_hidden_bc_to_output=np.dot(hidden_bc_output.T,d_output)

grad_bias_output=np.sum(d_output,axis=0,keepdims=True)

#隐藏层的梯度

error_hidden_bc=np.dot(d_output,weights_hidden_bc_to_output.T)

d_hidden_bc=error_hidden_bc*relu_derivative(hidden_bc_output)

grad_hidden_a_to_hidden_bc=np.dot(hidden_a_output.T,d_hidden_bc)

grad_bias_hidden_bc=np.sum(d_hidden_bc,axis=0,keepdims=True)

#输入层到隐藏层的权重梯度

grad_input_to_hidden_a_1=np.dot(x.T,d_hidden_bc[:,0]*weights_hidden_a_to_hidden_bc[0,0]*relu_derivative(

hidden_a_output))

grad_input_to_hidden_a_2=np.dot(x.T,d_hidden_bc[:,1]*weights_hidden_a_to_hidden_bc[0,1]*relu_derivative(

hidden_a_output))

grad_input_to_hidden_a=grad_input_to_hidden_a_1+grad_input_to_hidden_a_2

grad_bias_hidden_a_1=np.sum(

d_hidden_bc[:,0]*weights_hidden_a_to_hidden_bc[0,0]*relu_derivative(hidden_a_output),axis=0,

keepdims=True)

grad_bias_hidden_a_2=np.sum(

d_hidden_bc[:,1]*weights_hidden_a_to_hidden_bc[0,1]*relu_derivative(hidden_a_output),axis=0,

keepdims=True)

grad_bias_hidden_a=grad_bias_hidden_a_1+grad_bias_hidden_a_2

returngrad_hidden_bc_to_output,grad_hidden_a_to_hidden_bc,grad_input_to_hidden_a,grad_bias_output,grad_bias_hidden_bc,grad_bias_hidden_a

#训练过程

losses=[]#损失

errors=[]#误差

foriterationinrange(max_iterations):

#前向传播

y_pred,hidden_bc_output,hidden_a_output=forward_pass(x)

#计算损失

loss=compute_loss(y_pred,y)

losses.append(loss)

#计算误差

error=abs(y_pred-y).reshape(1,)

errors.append(error)

iferror<e_min:#如果损失小于误差阈值,停止训练

break

#反向传播

grad_hidden_bc_to_output,grad_hidden_a_to_hidden_bc,grad_input_to_hidden_a,grad_bias_output,grad_bias_hidden_bc,grad_bias_hidden_a=backward_pass(

y_pred,y,hidden_bc_output,hidden_a_output)

#更新权重和偏置

weights_hidden_bc_to_output-=learning_rate*grad_hidden_bc_to_output

weights_hidden_a_to_hidden_bc-=learning_rate*grad_hidden_a_to_hidden_bc

weights_input_to_hidden_a-=learning_rate*grad_input_to_hidden_a

bias_output-=(learning_rate*grad_bias_output).reshape(1,)

bias_hidden_bc-=(learning_rate*grad_bias_hidden_bc).reshape(2,)

bias_hidden_a-=(learning_rate*grad_bias_hidden_a).reshape(1,)

importmatplotlib.pyplotasplt

plt.figure(figsize=(12,6))

plt.subplot(1,2,1)

plt.plot(losses)

plt.xlabel('

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论