文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python人工智能算法之人工神经网络怎么使用

2023-07-05 14:23

关注

本篇内容介绍了“python人工智能算法之人工神经网络怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

人工神经网络

(Artificial Neural Network,ANN)是一种模仿生物神经网络的结构和功能的数学模型,其目的是通过学习和训练,在处理未知的输入数据时能够进行复杂的非线性映射关系,实现自适应的智能决策。可以说,ANN是人工智能算法中最基础、最核心的一种算法。

ANN模型的基本结构包含输入层、隐藏层和输出层。输入层接收输入数据,隐藏层负责对数据进行多层次、高维度的变换和处理,输出层对处理后的数据进行输出。ANN的训练过程是通过多次迭代,不断调整神经网络中各层的权重,从而使得神经网络能够对输入数据进行正确的预测和分类。

人工神经网络算法示例

接下来看看一个简单的人工神经网络算法示例:

import numpy as npclass NeuralNetwork():    def __init__(self, layers):        """        layers: 数组,包含每个层的神经元数量,例如 [2, 3, 1] 表示 3 层神经网络,第一层 2 个神经元,第二层 3 个神经元,第三层 1 个神经元。        weights: 数组,包含每个连接的权重矩阵,默认值随机生成。        biases: 数组,包含每个层的偏差值,默认值为 0。        """        self.layers = layers        self.weights = [np.random.randn(a, b) for a, b in zip(layers[1:], layers[:-1])]        self.biases = [np.zeros((a, 1)) for a in layers[1:]]    def sigmoid(self, z):        """Sigmoid 激活函数."""        return 1 / (1 + np.exp(-z))    def forward_propagation(self, a):        """前向传播."""        for w, b in zip(self.weights, self.biases):            z = np.dot(w, a) + b            a = self.sigmoid(z)        return a    def backward_propagation(self, x, y):        """反向传播."""        nabla_w = [np.zeros(w.shape) for w in self.weights]        nabla_b = [np.zeros(b.shape) for b in self.biases]        a = x        activations = [x]        zs = []        for w, b in zip(self.weights, self.biases):            z = np.dot(w, a) + b            zs.append(z)            a = self.sigmoid(z)            activations.append(a)        delta = self.cost_derivative(activations[-1], y) * self.sigmoid_prime(zs[-1])        nabla_b[-1] = delta        nabla_w[-1] = np.dot(delta, activations[-2].transpose())        for l in range(2, len(self.layers)):            z = zs[-l]            sp = self.sigmoid_prime(z)            delta = np.dot(self.weights[-l+1].transpose(), delta) * sp            nabla_b[-l] = delta            nabla_w[-l] = np.dot(delta, activations[-l-1].transpose())        return (nabla_w, nabla_b)    def train(self, x_train, y_train, epochs, learning_rate):        """训练网络."""        for epoch in range(epochs):            nabla_w = [np.zeros(w.shape) for w in self.weights]            nabla_b = [np.zeros(b.shape) for b in self.biases]            for x, y in zip(x_train, y_train):                delta_nabla_w, delta_nabla_b = self.backward_propagation(np.array([x]).transpose(), np.array([y]).transpose())                nabla_w = [nw+dnw for nw, dnw in zip(nabla_w, delta_nabla_w)]                nabla_b = [nb+dnb for nb, dnb in zip(nabla_b, delta_nabla_b)]            self.weights = [w-(learning_rate/len(x_train))*nw for w, nw in zip(self.weights, nabla_w)]            self.biases = [b-(learning_rate/len(x_train))*nb for b, nb in zip(self.biases, nabla_b)]    def predict(self, x_test):        """预测."""        y_predictions = []        for x in x_test:            y_predictions.append(self.forward_propagation(np.array([x]).transpose())[0][0])        return y_predictions    def cost_derivative(self, output_activations, y):        """损失函数的导数."""        return output_activations - y    def sigmoid_prime(self, z):        """Sigmoid 函数的导数."""        return self.sigmoid(z) * (1 - self.sigmoid(z))

使用以下代码示例来实例化和使用这个简单的神经网络类:

x_train = [[0, 0], [1, 0], [0, 1], [1, 1]]y_train = [0, 1, 1, 0]# 创建神经网络nn = NeuralNetwork([2, 3, 1])# 训练神经网络nn.train(x_train, y_train, 10000, 0.1)# 测试神经网络x_test = [[0, 0], [1, 0], [0, 1], [1, 1]]y_test = [0, 1, 1, 0]y_predictions = nn.predict(x_test)print("Predictions:", y_predictions)print("Actual:", y_test)

输出结果:

Predictions: [0.011602156431658403, 0.9852717774725432, 0.9839448924887225, 0.020026540429992387]
Actual: [0, 1, 1, 0]

“python人工智能算法之人工神经网络怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯