【Python机器学习】神经网络中全连接层与线性回归的讲解及实战(Tensorflow、MindSpore平台 附源码)
创始人
2024-04-26 13:27:27
0

需要全部代码请点赞关注收藏后评论区留言私信~~~

全连接层与线性回归

神经网络模型也是参数学习模型,因为对它的学习只是得到神经网络参数的最优值,而神经网络的结构必须事先设计好。如果确实不能通过改进学习过程来达到理想效果,则要重新设计神经网络的结构。

层状神经网络的隐层和输出层具有处理信息的能力,它们又可细分为全连接层、卷积层、池化层、LSTM层等等,通过适当排列可以组合成适应不同任务的网络。

全连接层是层状神经网络最基本的层,本小节从线性回归模型入手,深入讨论全连接层。

线性回归模型改写为:

 

神经元模型

 

可以将线性回归看成是神经元模型,其阈值θ=w^(0),其激励函数为等值函数f(x)=x,即该神经元是没有激励函数的特殊神经元。

先定义一个二维平面上的线性目标函数并用它来生成训练样本,再定义一个代表线性回归模型的神经网络,然后用训练样本对该网络进行训练,并在训练的过程中动态显示线性模型的拟合过程。

效果如下 

 

 代码如下

### 定义训练样本生成函数
import numpy as np
np.random.seed(1101) # 指定随机数种子,产生相同的随机数,便于观察试验结果def f(x, w=3.0, b=1.0): # 目标函数return x * w + bdef get_data(num):for _ in range(num):x = np.random.uniform(-10.0, 10.0)noise = np.random.normal(0, 3)y = f(x) + noiseyield np.array([x]).astype(np.float32), np.array([y]).astype(np.float32)
### 生成训练样本并增强
from mindspore import dataset as ds
import matplotlib.pyplot as pltdata_number = 80 # 样本总数
batch_size = 16 # 每批训练样本数(批梯度下降法)
repeat_size = 1train_data = list(get_data(data_number))
X, y = zip(*train_data)
plt.scatter(X, y, color="black", s=10)
xx = np.arange(-10.0, 10, 1)
yy = f(xx)
plt.plot(xx, yy, color="red", linewidth=1, linestyle='-')
plt.show()

按上述方法构建的层被称为全连接层(fully connected layers),它是层状神经网络最基本的层。

全连接层的每一个节点都与上一层的所有节点相连。设前一层的输出为X=(x_1, x_2,…,x_i,…,x_m),本层的输出为Y=(y_1, y_2,…,y_j,…,y_n),其中:

 

定义连接系数矩阵:

 

和阈值系数向量:

 

全连接层的计算可以写成矩阵形式:

 

在全连接层中,连接系数和阈值系数是要训练的参数,它们一共有m×n+n个。

动态拟合过程,当训练到第十轮左右的时候模型拟合度已经十分高了 

 

代码如下

import numpy as np
np.random.seed(1101) # 指定随机数种子,产生相同的随机数,便于观察试验结果def f(x, w=3.0, b=1.0): # 目标函数return x * w + bdef get_data(num):for _ in range(num):x = np.random.uniform(-10.0, 10.0)noise = np.random.normal(0, 3)y = f(x) + noiseyield np.array([x]).astype(np.float32), np.array([y]).astype(np.float32)
from mindspore import dataset as ds
import matplotlib.pyplot as pltdata_number = 80 # 样本总数
batch_size = 16 # 每批训练样本数(批梯度下降法)
repeat_size = 1train_data = list(get_data(data_number))
X, y = zip(*train_data)
plt.scatter(X, y, color="black", s=10)
xx = np.arange(-10.0, 10, 1)
yy = f(xx)
plt.plot(xx, yy, color="red", linewidth=1, linestyle='-')
plt.show()
import time
from mindspore import Tensordef plot_model_and_datasets(net, train_data):weight = net.trainable_params()[0]bias = net.trainable_params()[1]x = np.arange(-10, 10, 1)y = x * Tensor(weight).asnumpy()[0][0] + Tensor(bias).asnumpy()[0]x1, y1 = zip(*train_data)x_target = xy_target = f(x_target)plt.axis([-11, 11, -20, 25])plt.scatter(x1, y1, color="black", s=10)plt.plot(x, y, color="blue", linestyle=':', linewidth=2)plt.plot(x_target, y_target, color="red")plt.show()time.sleep(0.02)from IPython import display
from mindspore.train.callback import Callbackclass ImageShowCallback(Callback): # 回调类def __init__(self, net, train_data):self.net = netself.train_data = train_datadef step_end(self, run_context):plot_model_and_datasets(self.net, self.train_data)display.clear_output(wait=True)

 创作不易 觉得有帮助请点赞关注收藏~~~

相关内容

热门资讯

广西:以制度创新推进“十五五”... 人民网南宁1月12日电 (记者陈燕)近日,自治区人民政府印发《广西重大项目管理办法》(以下简称《办法...
严禁医疗机构开展殡仪服务,用制... 1月12日,国家卫健委等六部门发布《医疗卫生机构亡故患者全流程服务管理规定》(以下简称《管理规定》)...
史上最猛!吉利起诉电池供应商,... 从吉利旗下公司,状告电池供应商欣旺达索赔23亿来看,电池出了问题到底应该谁负责?车企自研自产电池是不...
30天,7000元,全额退回!... 近日,崂山公安分局金家岭派出所收到市民张女士送来的一面锦旗和一封感谢信。锦旗上写“为民解忧暖人心,恪...
哈密市县妇联举办妇女权益保障与... 1月7日,由哈密市妇联与巴里坤县妇联牵头的主题为“跟党奋进新征程 巾帼建功新时代”今冬明春大宣讲活动...
长航公安南京分局妥善调解一起水... 2026年1月10日17时15分,重庆籍某货轮船长冉某报警称:因被拖欠3万多元工资,与货轮公司老板有...
因未能有效执行风险管理、内控制... 北京商报讯(记者 李海媛)1月12日,新疆证监局发文称,经查,金石期货有限公司库尔勒营业部(以下简称...
国内格局:经济分化与政策定调下... 从三季度开始,经济分化态势愈发显著,投资与社零均快速下行,但社融、出口及工业增加值仍保持稳健增速。从...
被告履约能力严重不足!电子城无... 1月12日,电子城(600658)发布关于子公司重大诉讼事项的进展公告,公司的全资子公司中关村电子城...
大庆肇源公安依托“三调联动” ... 中新网黑龙江新闻1月12日电(杜卓远 刘璐)为深入践行新时代“枫桥经验”,大庆市公安局肇源县局松江派...