2020.08.29基本的神经网络流程

简单的例子:

输入为100个具有1000个特征的数据,经过隐藏层1变成100个具有100个特征的数据,经过隐藏层21变成100个具有10个特征的数据,最后输出层输出100*10的分类数据.

损失函数使用的是均方误差函数计算损失值,并进行后向传播.后向传播对每个节点链式求导计算出参数的梯度.然后更新梯度.

训练次数为50,完成对初始权重参数的优化调整.

程序:

import torch

'''
设定数量:
batch_n:在一个批次中输入的数据
input_data:每个数据包含的数据特征有input_data个
hidden_layer:定义隐藏层后保留的数据特征的个数
output_data:输出的数据,每个数据包含的数据特征有output_data个
'''
batch_n = 100 #输入数据100
hidden_layer = 100  #经过隐藏层后保留的特征数
input_data = 1000 # 输入数据的特征数
output_data = 10 # 输出数据的特征数

#利用随机生成输入输出数据,以及权重数据
x = torch.randn(batch_n,input_data)  #输入为(100,1000),数据值为随机
#print(x)
y = torch.randn(batch_n,output_data) #输出为(100,10),数据值为随机

w1 = torch.randn(input_data,hidden_layer) #w1:(1000,100)
w2 = torch.randn(hidden_layer,output_data)  #w2:(100,10)

'''
训练总次数(循环):epoch_n
学习速率:learining_rate
'''
epoch_n = 50   # 训练次数,完成对初始权重参数的优化调整
learining_rate = 1e-6#0.0000001,优化中的学习速率

#对模型进行正式训练并对参数优化
'''
梯度下降的方法优化神经网络的参数
定义后向传播的次数epoch_n和梯度下降使用的学习速率learining_rate
对模型进行正式训练并对参数进行优化
'''
# 正式训练
for epoch in range(epoch_n):
    h1 = x.mm(w1)#100*1000   #两个连续的矩阵乘法计算出预测结果
    print(h1.shape)
    h1 = h1.clamp(min=0)    #使用clamp方法裁剪,将小于0的值全部重新赋值为0,等于加了一个ReLU激活函数的功能
    y_pred = h1.mm(w2)#100*10 # 前向传播y_pred= x*W1*W2
    print(y_pred.shape)

    loss=(y_pred - y).pow(2).sum()  #均方误差函数(预测值和真实值计算误差值,用loss表示误差值,对误差值使用了均方误差函数)
    print("Epoch:{},loss:{:.4f}".format(epoch,loss)) # 计算损失

    #对每个节点链式求导计算出参数的梯度
    grad_y_pred = 2*(y_pred - y)
    grad_w2 = h1.t().mm(grad_y_pred) #W2的梯度,h1的转置*grad_y_pred
    grad_h = grad_y_pred.clone()
    grad_h = grad_h.mm(w2.t())
    grad_h.clamp_(min=0)
    grad_w1 = x.t().mm(grad_h)     #计算W1的梯度,X的转置*grad_h
    # 更新梯度
    w1 -= learining_rate*grad_w1   #得到参数的梯度值之后,按照之前定义好的学习速率对权重参数w1进行更新
    w2 -= learining_rate*grad_w2   #得到参数的梯度值之后,按照之前定义好的学习速率对权重参数w2进行更新

程序结构图:(更新)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值