【Python机器学习】神经网络中全连接层与线性回归的讲解及实战(Tensorflow、MindSpore平台 附源码)

简介: 【Python机器学习】神经网络中全连接层与线性回归的讲解及实战(Tensorflow、MindSpore平台 附源码)

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

全连接层与线性回归

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

层状神经网络的隐层和输出层具有处理信息的能力,它们又可细分为全连接层、卷积层、池化层、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 + b
def get_data(num):
    for _ in range(num):
        x = np.random.uniform(-10.0, 10.0)
        noise = np.random.normal(0, 3)
        y = f(x) + noise
        yield np.array([x]).astype(np.float32), np.array([y]).astype(np.float32)
### 生成训练样本并增强
from mindspore import dataset as ds
import matplotlib.pyplot as plt
data_number = 80 # 样本总数
batch_size = 16 # 每批训练样本数(批梯度下降法)
repeat_size = 1
train_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 + b
def get_data(num):
    for _ in range(num):
        x = np.random.uniform(-10.0, 10.0)
        noise = np.random.normal(0, 3)
        y = f(x) + noise
        yield np.array([x]).astype(np.float32), np.array([y]).astype(np.float32)
from mindspore import dataset as ds
import matplotlib.pyplot as plt
data_number = 80 # 样本总数
batch_size = 16 # 每批训练样本数(批梯度下降法)
repeat_size = 1
train_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 Tensor
def 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 = x
    y_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 Callback
class ImageShowCallback(Callback): # 回调类
    def __init__(self, net, train_data):
        self.net = net
        self.train_data = train_data
    def step_end(self, run_context):
        plot_model_and_datasets(self.net, self.train_data)
        display.clear_output(wait=True)

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

相关文章
|
2天前
|
算法 安全 大数据
【算法合规新时代】企业如何把握“清朗·网络平台算法典型问题治理”专项行动?
在数字化时代,算法推动社会发展,但也带来了信息茧房、大数据杀熟等问题。中央网信办发布《关于开展“清朗·网络平台算法典型问题治理”专项行动的通知》,针对六大算法问题进行整治,明确企业需落实算法安全主体责任,建立健全审核与管理制度,并对算法进行全面审查和备案。企业应积极自查自纠,确保算法合规透明,防范风险,迎接新机遇。
|
2月前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
198 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
2月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
216 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
1月前
|
机器学习/深度学习 边缘计算 运维
机器学习在网络安全中的防护:智能化的安全屏障
机器学习在网络安全中的防护:智能化的安全屏障
119 15
|
1月前
|
运维 监控 Cloud Native
构建深度可观测、可集成的网络智能运维平台
本文介绍了构建深度可观测、可集成的网络智能运维平台(简称NIS),旨在解决云上网络运维面临的复杂挑战。内容涵盖云网络运维的三大难题、打造云原生AIOps工具集的解决思路、可观测性对业务稳定的重要性,以及产品发布的亮点,包括流量分析NPM、网络架构巡检和自动化运维OpenAPI,助力客户实现自助运维与优化。
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
100 3
|
3月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
103 8
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
打破传统:机器学习与神经网络获2024年诺贝尔物理学奖引发的思考
诺贝尔物理学奖首次授予机器学习与神经网络领域,标志该技术在物理学研究中的重要地位。本文探讨了这一决定对物理学研究的深远影响,包括数据分析、理论物理突破及未来科研方向的启示,同时分析了其对学术跨界合作与全球科研产业的影响。
68 4
|
3月前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
235 1
|
3月前
|
机器学习/深度学习 自然语言处理 算法
深入理解机器学习算法:从线性回归到神经网络
深入理解机器学习算法:从线性回归到神经网络

热门文章

最新文章