带 Python 的人工智能——神经网络

神经网络是一种并行计算设备,旨在构建大脑的计算机模型。其主要目标是开发一个能够比传统系统更快完成各种计算任务的系统。这些任务包括模式识别与分类、近似、优化和数据聚类。

什么是人工神经网络(ANN)

人工神经网络(ANN)是一种高效的计算系统,其核心主题借鉴了生物神经网络的类比。人工神经网络也被称为人工神经系统、并行分布式处理系统和连接主义系统。ANN收集大量以某种模式互联的单元,以便它们之间的通信。这些单元,也称为节点神经元,是并行运行的简单处理器。

每个神经元都通过连接链 与其他神经元相连。每个连接链路都关联一个权重,包含输入信号的信息。这是神经元解决特定问题最有用的信息,因为重量 通常会激发或抑制所传递的信号。每个神经元都有其内部状态,这被称为激活信号。输出信号在输入信号和激活规则结合后产生的,可以发送给其他单元。

如果你想详细研究神经网络,可以点击链接------人工神经网络

安装有用软件包

在Python中创建神经网络时,我们可以使用一个强大的神经网络软件包NeuroLab。这是一个基础神经网络算法库,提供灵活的网络配置和Python学习算法。你可以在命令提示符下使用以下命令安装此包 −

复制代码
pip install NeuroLab

如果您使用Anaconda环境,请使用以下命令安装NeuroLab −

python 复制代码
conda install -c labfabulous neurolab

构建神经网络

在本节中,让我们用 NeuroLab 软件包构建一些 Python 神经网络。

基于感知器的分类器

感知器是人工神经网络的构建模块。如果你想了解更多关于感知器的信息,可以点击链接 − artificial_neural_network

以下是构建基于简单神经网络感知器的 Python 代码的逐步执行 −

如图所示导入必要的软件包 −

python 复制代码
import matplotlib.pyplot as plt import neurolab as nl

输入值。请注意,这是监督学习的例子,因此你还需要提供目标值。

python 复制代码
input = [[0, 0], [0, 1], [1, 0], [1, 1]] target = [[0], [0], [0], [1]]

创建包含2个输入和1个神经元的网络 −

python 复制代码
net = nl.net.newp([[0, 1],[0, 1]], 1)

现在,训练网络。这里,我们用三角洲规则进行训练。

python 复制代码
error_progress = net.train(input, target, epochs=100, show=10, lr=0.1)

现在,可视化输出并绘制图−

python 复制代码
plt.figure() plt.plot(error_progress) plt.xlabel('Number of epochs') plt.ylabel('Training error') plt.grid() plt.show()

你可以看到下图,显示了使用误差指标−的训练进度

单层神经网络

在这个例子中,我们创建了一个单层神经网络,由独立的神经元作用于输入数据以产生输出。注意我们使用的是名为neural_simple.txt的文本文件作为输入。

导入如图所示的有用包 −

python 复制代码
import numpy as np import matplotlib.pyplot as plt import neurolab as nl

加载数据集时,加载方式如下 −

python 复制代码
input_data = np.loadtxt(/Users/admin/neural_simple.txt')

以下是我们将使用的数据。注意,在这份数据中,前两列是特征,后两列是标签。

python 复制代码
array([[2. , 4. , 0. , 0. ], [1.5, 3.9, 0. , 0. ], [2.2, 4.1, 0. , 0. ], [1.9, 4.7, 0. , 0. ], [5.4, 2.2, 0. , 1. ], [4.3, 7.1, 0. , 1. ], [5.8, 4.9, 0. , 1. ], [6.5, 3.2, 0. , 1. ], [3. , 2. , 1. , 0. ], [2.5, 0.5, 1. , 0. ], [3.5, 2.1, 1. , 0. ], [2.9, 0.3, 1. , 0. ], [6.5, 8.3, 1. , 1. ], [3.2, 6.2, 1. , 1. ], [4.9, 7.8, 1. , 1. ], [2.1, 4.8, 1. , 1. ]])

现在,将这四列分成2列数据和2个标签−

python 复制代码
data = input_data[:, 0:2] labels = input_data[:, 2:]

使用以下命令绘制输入数据 −

python 复制代码
plt.figure() plt.scatter(data[:,0], data[:,1]) plt.xlabel('Dimension 1') plt.ylabel('Dimension 2') plt.title('Input data')

现在,定义每个维度的最小值和最大值,如此处所示 −

python 复制代码
dim1_min, dim1_max = data[:,0].min(), data[:,0].max() dim2_min, dim2_max = data[:,1].min(), data[:,1].max()

接下来,定义输出层中的神经元数量如下 −

python 复制代码
nn_output_layer = labels.shape[1]

现在,定义一个单层神经网络 −

python 复制代码
dim1 = [dim1_min, dim1_max] dim2 = [dim2_min, dim2_max] neural_net = nl.net.newp([dim1, dim2], nn_output_layer)

用时间点数和学习率训练神经网络,如图所示 −

python 复制代码
error = neural_net.train(data, labels, epochs = 200, show = 20, lr = 0.01)

现在,使用以下命令可视化并绘制训练进度 −

python 复制代码
plt.figure() plt.plot(error) plt.xlabel('Number of epochs') plt.ylabel('Training error') plt.title('Training error progress') plt.grid() plt.show()

现在,使用上述分类器中的测试数据点 −

python 复制代码
print('\nTest Results:') data_test = [[1.5, 3.2], [3.6, 1.7], [3.6, 5.7],[1.6, 3.9]] for item in data_test: print(item, '-->', neural_net.sim([item])[0])

你可以在这里找到测试结果------

python 复制代码
[1.5, 3.2] --> [1. 0.] [3.6, 1.7] --> [1. 0.] [3.6, 5.7] --> [1. 1.] [1.6, 3.9] --> [1. 0.]

你可以看到以下图表作为迄今为止讨论的代码输出------

多层神经网络

在这个例子中,我们创建了一个由多层神经网络组成的多层神经网络,以提取训练数据中的底层模式。这个多层神经网络将像回归器一样工作。我们将根据以下公式生成一些数据点:y = 2x2+8.

如图所示导入必要的软件包 −

python 复制代码
import numpy as np import matplotlib.pyplot as plt import neurolab as nl

基于上述方程生成某个数据点 −

python 复制代码
min_val = -30 max_val = 30 num_points = 160 x = np.linspace(min_val, max_val, num_points) y = 2 * np.square(x) + 8 y /= np.linalg.norm(y)

现在,将该数据集重塑为如下 −

python 复制代码
data = x.reshape(num_points, 1) labels = y.reshape(num_points, 1)

使用以下命令可视化并绘制输入数据集 −

python 复制代码
plt.figure() plt.scatter(data, labels) plt.xlabel('Dimension 1') plt.ylabel('Dimension 2') plt.title('Data-points')

现在,构建一个有两层隐藏神经的神经网络 ,第一隐藏层有 个神经元,第二隐藏层有 个神经元,输出层有一个。

python 复制代码
neural_net = nl.net.newff([[min_val, max_val]], [10, 6, 1])

现在使用梯度训练算法 −

python 复制代码
neural_net.trainf = nl.train.train_gd

现在训练网络,目标是学习上述生成的数据 −

python 复制代码
error = neural_net.train(data, labels, epochs = 1000, show = 100, goal = 0.01)

现在,对训练数据点运行神经网络------

python 复制代码
output = neural_net.sim(data) y_pred = output.reshape(num_points)

现在绘制和可视化任务−

python 复制代码
plt.figure() plt.plot(error) plt.xlabel('Number of epochs') plt.ylabel('Error') plt.title('Training error progress')

现在我们将绘制实际输出与预测输出的比值 −

python 复制代码
x_dense = np.linspace(min_val, max_val, num_points * 2) y_dense_pred = neural_net.sim(x_dense.reshape(x_dense.size,1)).reshape(x_dense.size) plt.figure() plt.plot(x_dense, y_dense_pred, '-', x, y, '.', x, y_pred, 'p') plt.title('Actual vs predicted') plt.show()

根据上述命令,你可以观察到如下图 −

相关推荐
kobe_OKOK_2 小时前
Django缓存接口数据
python·缓存·django
昔时扬尘处2 小时前
【题外话】台式机配件选型与组装流程
python·电脑·台式机
逐云者1232 小时前
构建高效任务中心:CDC 数据同步的工程实践与架构权衡
人工智能·架构·大模型·数据中心·cdc·任务中心·大数据同步
小桥流水---人工智能2 小时前
多模型统一导出 t-SNE 可视化数据的工程实践(1DCNN / DAN / DNN / DRN / Transformer)
人工智能·transformer·dnn
whitelbwwww2 小时前
使用神经网络来拟合数据
人工智能·深度学习·神经网络
学术小白人2 小时前
IEEE出版|2026年人工智能与社交网络系统国际学术会议(AISNS 2026)
大数据·人工智能·科技·物联网·rdlink研发家
*星星之火*2 小时前
【大白话 AI 答疑】第10篇 数学可视化网站汇总
人工智能
啊阿狸不会拉杆2 小时前
《数字图像处理》-实验1
图像处理·人工智能·算法·计算机视觉·数字图像处理
糖炒狗子2 小时前
Textin模型加速器+火山引擎打造商业计划书智能体
人工智能·火山引擎