千家信息网

如何使用python创建网络模型吧

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关如何使用python创建网络模型吧,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。神经网络(NN),也被称为人工神经网络(A
千家信息网最后更新 2026年11月01日如何使用python创建网络模型吧

今天就跟大家聊聊有关如何使用python创建网络模型吧,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

神经网络(NN),也被称为人工神经网络(ANN),是机器学习领域中学习算法的子集,大体上借鉴了生物神经网络的概念。目前,神经网络在计算机视觉、自然语言处理等领域应用广泛。德国资深机器学习专家Andrey Bulezyuk说到,"神经网络正在彻底改变机器学习,因为它们能够有效地模拟各种学科和行业的复杂抽象,且无需太多人工参与。"
大体上,人工神经网络基本包含以下组件:

  • 接收数据并传递数据的输入层(input layer);

  • 隐藏层(hidden layer);

  • 输出层(output layer);

  • 层与层之间的权重(weight);

  • 每个隐藏层使用的激活函数(activation function);


在本文教程中,使用的是简单的Sigmoid激活函数,但注意一点,在深层神经网络模型中, sigmoid激活函数一般不作为首选,原因是其易发生梯度弥散现象。
此外,人工神经网络有几种不同类型的神经网络,比如前馈神经网络、卷积神经网络及递归神经网络等。本文将以简单的前馈或感知神经网络为例,这种类型的人工神经网络是直接从前到后传递数据的,简称前向传播过程。
而训练前馈神经元通常需要反向传播算法,这就需要为网络提供相应的输入和输出集。当输入数据被传输到神经元时,它会经过相应的处理,并将产生的输出传输给下一层。
下图简单展示了一个神经网络结构:


此外,理解神经网络如何工作的最好方法是学习如何在不使用任何工具箱的前提下从头开始构建一个。在本文中,我们将演示如何使用Python创建一个简单的神经网络。

问题

下表显示了我们将解决的问题:


我们将训练神经网络,以便在提供一组新数据时可以预测出正确的输出值。
从表中看到,输出的值始终等于输入节中的第一个值。因此,我们可以期望新情形的输出(?)值为1。
下面让我们看看是否可以使用一些Python代码来得到相同的结果。

创建神经网络类|NeuralNetwork Class

我们将在Python中创建一个NeuralNetwork类来训练神经元以提供准确的预测,该类还包含其他辅助函数。我们不会将神经网络库用于创建这个简单的神经网络示例中,但会导入基本的Numpy库来协助计算。
Numpy库是处理数据的一种基本库,它具有以下四种重要的计算方法:

  • EXP--用于产生所述自然指数;

  • array--用于生成矩阵;

  • dot--用于矩阵相乘;

  • random--用于生成随机数;

应用Sigmoid函数

我们将使用Sigmoid函数,它绘制出一个"S"形曲线,将其作为本文创建的神经网络的激活函数。


此函数可以将任何值映射到0到1之间,并能帮助我们规范化输入的加权和。
此后,我们将创建Sigmoid函数的导数,以帮助计算权重的基本调整。
可以使用Sigmoid函数的输出来生成其导数。例如,如果输出变量是"x",那么它的导数将是x *(1-x)。

训练模型

训练模型意味着我们将教导神经网络进行准确预测的阶段。每个输入都有一个权重(weights)--正或负的,这意味着具有大值正权重或大值负权重的输入将多所得到的输出有更大地影响。
注意,模型训练最初时,每个权重的初始化都是随机数。
以下是本文构建的神经网络示例问题中训练过程:

  • 1.从训练数据集中获取输入,根据它们的权重进行一些调整,并通过计算神经网络输出的方法来一层一层的传输;

  • 2.计算反向传播的错误率。在这种情况下,它是神经元预测得到的输出与训练数据集的预期输出之间的误差;

  • 3.根据得到的误差范围,使用误差加权导数公式进行一些小的权重调整;

  • 4.将此过程重复15,000次,在每次迭代过程中,同时处理整个训练集;


在这里,我们使用".T"函数对矩阵求偏置。因此,数字将以这种方式存储:


最终,神经元的权重将针对所提供的训练数据进行优化。因此,如果神经网络的输出与期望的输出一致时,说明训练完成,可以进行准确的预测,这就是反向传播的方式。

封装

最后,初始化NeuralNetwork类后并运行整个程序,以下是如何在Python项目中创建神经网络的完整代码:

import numpy as npclass NeuralNetwork():        def __init__(self):        # 设置随机数种子        np.random.seed(1)                # 将权重转化为一个3x1的矩阵,其值分布为-1~1,并且均值为0        self.synaptic_weights = 2 * np.random.random((3, 1)) - 1    def sigmoid(self, x):        # 应用sigmoid激活函数        return 1 / (1 + np.exp(-x))    def sigmoid_derivative(self, x):        #计算Sigmoid函数的偏导数        return x * (1 - x)    def train(self, training_inputs, training_outputs, training_iterations):                # 训练模型        for iteration in range(training_iterations):            # 得到输出            output = self.think(training_inputs)            # 计算误差            error = training_outputs - output                        # 微调权重            adjustments = np.dot(training_inputs.T, error * self.sigmoid_derivative(output))            self.synaptic_weights += adjustments    def think(self, inputs):        # 输入通过网络得到输出           # 转化为浮点型数据类型                inputs = inputs.astype(float)        output = self.sigmoid(np.dot(inputs, self.synaptic_weights))        return outputif __name__ == "__main__":    # 初始化神经类    neural_network = NeuralNetwork()    print("Beginning Randomly Generated Weights: ")    print(neural_network.synaptic_weights)    #训练数据    training_inputs = np.array([[0,0,1],                                [1,1,1],                                [1,0,1],                                [0,1,1]])    training_outputs = np.array([[0,1,1,0]]).T    # 开始训练    neural_network.train(training_inputs, training_outputs, 15000)    print("Ending Weights After Training: ")    print(neural_network.synaptic_weights)    user_input_one = str(input("User Input One: "))    user_input_two = str(input("User Input Two: "))    user_input_three = str(input("User Input Three: "))        print("Considering New Situation: ", user_input_one, user_input_two, user_input_three)    print("New Output data: ")    print(neural_network.think(np.array([user_input_one, user_input_two, user_input_three])))    print("Wow, we did it!")

以下是运行代码后产生的输出:

以上是我们设法创建的一个简单的神经网络。首先神经网络开始为自己分配一些随机权,此后,它使用训练样例训练自身。
因此,如果出现新的样本输入[1,0,0],则其输出值为0.9999584。而期望的的正确答案是1,可以说二者是非常接近了,考虑到Sigmoid函数是非线性函数,这点误差是可以接受的。

看完上述内容,你们对如何使用python创建网络模型吧有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

神经 网络 神经网络 输出 训练 函数 数据 权重 输入 模型 人工 导数 激活 神经元 误差 矩阵 过程 传播 处理 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 百单网互联网科技有限公司怎么样 云信互联网科技有限公司 宜安科技 互联网金融 互联网金融科技平台 互联网 视角下的科技创新 互联网科技网站 科技与互联网的利与弊 温州喔噻互联网科技有限公司 湖南诚度互联网科技有限公司 荆州市昕露互联网络科技有限公司 青岛科技大学互联网大赛研究生 互联网5g黑科技有哪些 互联网科技大奖都有哪些公司 互联网科技如何创业 卓翼科技产业互联网合作 山东子淼互联网科技有限公司 互联网公司属于科技吗 互联网科技博主张洲 杭州科技互联网公司有哪些 喔噻互联网科技有限公司 伟宏互联网科技 互联网络科技有限公司 新华互联网科技校企合作 恒银科技与互联网金融 互联网科技产业特征 小米互联网科技园入驻 济南小医互联网科技有限公司招聘 广州梦谷互联网科技有限公司领导 网互联网络科技
0