Python神经网络教程:从基础到实践,掌握深度学习与计算机视觉应用

Python 一直以其语法简捷且灵活,以及拥有强大的生态系统和库而被广泛使用和喜爱。这些领域包括科学计算和机器学习。神经网络在机器学习领域起着至关重要的作用,并且可以用于计算机视觉。

Python神经网络教程:从基础到实践,掌握深度学习与计算机视觉应用

Python 一直以来因其语法简洁且灵活,以及拥有强大的生态系统和库而被广泛应用和喜爱,这些领域中包含科学计算和机器学习。神经网络在机器学习领域具有极为重要的地位,能够应用于计算机视觉、自然语言处理、推荐系统等诸多领域。本文将会对 Python 中的神经网络进行介绍,并提供一些实例。

什么是神经网络

神经网络是深度学习的模型,具备模拟动物神经系统的特性。神经网络由众多神经元构成,每个神经元如同一个函数,其输入为其他神经元的输出,经激活函数处理后产出输出。神经网络借助反向传播算法持续调整权重与偏置,让模型能更适配数据并进行预测或分类。

TensorFlow

TensorFlow 是谷歌推出的一款框架,这款框架很流行。它用于构建神经网络以及其他机器学习算法。TensorFlow 起初是为内部的谷歌研究人员而开发的,在开源之后,它很快就成为了最流行的深度学习框架中的一个。

在 TensorFlow 里,我们能够运用以下这些步骤去创建神经网络:

训练模型:对神经网络模型展开训练,从而对新数据的输出进行预测。可以使用随机梯度下降算法并进行反向传播,然后不断更新模型的权重和偏置。对模型进行测试:利用测试集来测试模型,以此确定其准确性。能够使用不同的指标来评估模型的效果,像精度、召回率以及 F1 得分。

现在,我们要介绍两个通过 TensorFlow 来实现的神经网络的示例。

神经网络实例1:手写数字识别

手写数字识别属于计算机视觉领域的一个重要问题。神经网络在这个问题上展现出了良好的效果。在 TensorFlow 里,能够利用 MNIST 数据集来对神经网络进行训练。此数据集包含 60000 张 28 乘 28 的灰度图像以及相应的标签。

我们首先要安装 TensorFlow 和 NumPy 这两个库。以下是一个完整的手写数字识别代码:

import tensorflow as tf
在 tensorflow 的示例教程中,mnist 包含输入数据相关的内容,具体是通过 input_data 来获取的。
mnist 是通过 input_data.read_data_sets 函数读取“MNIST_data/”这个路径下的数据集合,并且是以独热编码的形式呈现的。
#创建模型
x 是一个占位符,其数据类型为 tf.float32,形状为 [None, 784]
W 是一个变量,它由 tf.Variable 函数创建,其初始值为全零的张量,该张量的形状为[784, 10]。
b 是一个变量,它由 tf.Variable 函数创建,其初始值为全零的数组,该数组的形状为[10]。
使用 TensorFlow 中的 softmax 函数对通过矩阵乘法 tf.matmul(x, W) 再加上偏置 b 后的结果进行处理,得到 y 的值。即先计算 x 与 W 的矩阵乘法,然后加上 b,最后对这个结果应用 softmax 函数得到 y。
#定义损失函数和优化器
创建了一个占位符 y_actual,其数据类型为 tf.float32,形状为 [None, 10]
loss 等于通过计算 tf.nn.softmax_cross_entropy_with_logits 得到的结果的平均值,其中 labels 为 y_actual,logits 为 y
使用 TensorFlow 中的 GradientDescentOptimizer 以 0.01 的学习率来最小化损失,通过调用其 minimize 方法得到 train_step 。
#初始化变量
创建了一个名为 init 的操作,该操作用于初始化所有的全局变量。
#训练模型
sess = tf.Session()
sess.run(init)
for i in range(1000):
mnist.train.next_batch(100),其结果是 batch_xs 和 batch_ys 被获取到,batch_xs 与 batch_ys 分别被赋值。
运行 train_step ,并提供 feed_dict ,其中 x 被赋值为 batch_xs ,y_actual 被赋值为 batch_ys 。
#评估模型
tf.argmax(y, 1) 与 tf.argmax(y_actual, 1) 相等时,correct_prediction 为真
计算 accuracy 就是计算 tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) ,即对 correct_prediction 进行类型转换为 tf.float32 后再求均值。
运行 sess.run(accuracy),并传入 feed_dict 参数,其中 feed_dict 的值为 {x: mnist.test.images, y_actual: mnist.test.labels}

在这个实例里,我们先准备了数据集 MNIST 。接着创建了一个简单的神经网络模型,此模型有 784 个输入和 10 个输出。之后定义了损失函数与优化器,把训练数据输入该模型进行训练。最后对测试数据进行测试评估,从而得到了准确性为 92.3%的结果。

神经网络实例2:垃圾邮件过滤器

现在很多人都在使用邮件系统,而所有人都遭遇到了垃圾邮件的问题。垃圾邮件过滤器是一种能够对一封电子邮件进行检查,以确定其是否为垃圾邮件的程序。接下来让我们一起看看怎样利用神经网络来构建一个垃圾邮件过滤器。

我们首先要准备一个垃圾邮件的数据集,这个数据集里面包含已被标记为垃圾邮件的邮件以及非垃圾邮件的邮件。要知道,在构建垃圾邮件过滤器的时候,会有两类邮件,一类是非垃圾邮件,另一类是垃圾邮件。

以下是垃圾邮件过滤器的完整代码:

import numpy as np
import pandas as pd
import tensorflow as tf
使用 sklearn 库中的 model_selection 模块来进行 train_test_split 操作。
使用 sklearn 库中的 metrics 模块可以获取 accuracy_score 这个指标。
#读取数据集
使用`pd.read_csv`函数读取了名为`spam.csv`的文件,数据存储在`data`中。
data 进行操作,将 ['Unnamed: 2', 'Unnamed: 3', 'Unnamed: 4'] 这些列从 data 中删除,并且是沿着轴 axis=1 进行删除操作
#转换标签
data 的 'v1' 通过映射操作,将 'ham' 映射为 0,将 'spam' 映射为 1,然后赋值给 data 的 'v1'
#划分数据集
X_train 由 data['v2']划分得出,X_test 也由 data['v2']划分得到,y_train 是从 data['v1']划分出来的,y_test 同样是从 data['v1']划分出来的,且划分时 test_size 为 0.33,random_state 为 42。
#创建神经网络模型
max_words = 1000
使用 tf.keras.preprocessing.text 中的 Tokenizer 类来进行 tokenize 操作,该 Tokenizer 的 num_words 参数设置为 max_words,且 char_level 参数设置为 False
对 X_train 进行文本的分词处理,tokenize 适应这些文本。
x_train 是通过 tokenize 函数将 X_train 转换为矩阵得到的
x_test 是将 X_test 通过 tokenize 转换为矩阵的结果。
模型被创建为一个顺序模型,使用了 tf.keras.models.Sequential() 的方式。
模型添加了一个全连接层,该全连接层有 512 个神经元,输入形状为(max_words,),激活函数为'relu'
模型添加了一个丢弃率为 0.5 的丢弃层。
模型添加了一个全连接层,该全连接层包含 256 个神经元,并且使用了 sigmoid 作为激活函数。
model.add(tf.keras.layers.Dropout(0.5))
模型添加了一个全连接层,该全连接层具有 1 个神经元,并且使用了 sigmoid 激活函数。
模型进行编译,其损失函数为“二进制交叉熵”。
              optimizer='adam',
              metrics=['accuracy'])
#训练模型
model.fit(x_train, y_train,
          batch_size=32,
          epochs=5,
验证数据为(x_test, y_test)。
#评估模型
模型对 x_test 进行预测,得到的结果是 y_predict 。
打印出“准确率:”以及 accuracy_score(y_test, y_predict.round())的结果

在这个实例里,我们运用的是 sklearn 的 train_test_split()方法来对数据集进行划分。接着,利用 Keras 库中的文本预处理工具,把数据集转化成矩阵(one-hot 编码)。之后,我们使用 Sequential 去声明神经元并设定其参数。我们首先使用训练后的模型,接着对测试数据进行预测,最后评估得出结果,这个结果的准确性为 98.02%。

结论

Python 中的神经网络是一种技术,它功能强大,可用于多种应用。比如在图像识别方面,还有垃圾邮件过滤器等方面。借助 TensorFlow,我们能够轻松地去创建神经网络模型,也能对其进行训练和测试,并且可以获得令人满意的结果。随着人们对机器学习的需求不断增长,神经网络技术会成为更重要的工具,在未来的各种应用场景中会得到更广泛的应用。

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读