设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

零基础使用Swift学习数据科学(3)

发布时间:2019-11-11 16:37 所属栏目:21 来源:人工智能遇见磐创
导读:该库还向Swift添加了许多有用的特性,比如对自动微分的原生支持(这让我想起了PyTorch中的Autograd),从而使它与数值计算更加兼容。 4.1 关于数据集 让我们来理解一下我们将在本节中使用的问题陈述。如果你以前接触

该库还向Swift添加了许多有用的特性,比如对自动微分的原生支持(这让我想起了PyTorch中的Autograd),从而使它与数值计算更加兼容。

零基础使用Swift学习数据科学

4.1 关于数据集

让我们来理解一下我们将在本节中使用的问题陈述。如果你以前接触过深度学习领域,你可能对它很熟悉。

我们将构建一个卷积神经网络(CNN)模型,使用MNIST数据集将图像分类为数字。该数据集包含6万张训练图像和1万张手写数字测试图像,可用于训练图像分类模型:

零基础使用Swift学习数据科学

这个数据集是处理计算机视觉问题的一个相当常见的数据集,所以我不打算详细描述它。

4.2 开始项目

在开始构建模型之前,我们需要下载数据集并对其进行预处理。为了方便你,我已经创建了一个GitHub存储库,里面预处理了代码和数据

下载安装代码,下载数据集,导入必要的库:

  • 你的数据集现在将在Colab上下载。让我们加载数据集:

4.3 加载数据集

4.4 探索MNIST

我们将从数据集绘制一些图像,以了解我们的工作是什么:

这是我们的图像是这样的:

零基础使用Swift学习数据科学

看起来很直观,对吧?第一个数字是手写的0,第二个数字是4。

4.5 定义模型的结构

现在让我们定义模型的体系结构。我使用的是LeNet-5架构,这是一个非常基础的CNN模型,使用了2个卷积层,平均池化层和3个全连接层。

最后一个全连接层的形状是10,因为我们有10个目标类,每个数字一个从0到9:

  • 你可能已经注意到,这些代码看起来非常类似于Keras、PyTorch或TensorFlow等Python框架中。
  • 编写代码的简单性是Swift最大的卖点之一。
  • Swift4Tensorflow你可以在这里阅读更多关于它的信息:https://www.tensorflow.org/swift/api_docs/Structs

4.6 选择梯度下降作为优化器

类似地,我们需要一个优化器函数来训练我们的模型。我们将使用Swift4Tensorflow中提供的随机梯度下降(SGD):

Swift4Tensorflow支持许多额外的优化器。你可以根据你的项目选择:

  • AMSGrad
  • AdaDelta
  • AdaGrad
  • AdaMax
  • Adam
  • Parameter
  • RMSProp
  • SGD

4.7 模型训练

现在一切都设置好了,让我们来训练模型!

上面的代码运行一个训练循环,该循环将数据集示例提供给模型,以帮助它做出更好的预测。以下是我们的训练步骤:

  1. 我们迭代每个epoch。epoch是遍历整个数据集的次数。
  2. 在epoch中,我们遍历训练数据集中的每个样本,获取其特征(x)和标签(y),这对于下一步非常重要。
  3. 利用例子的特征,我们做了一个预测,并与真实标签进行了比较。这是用来计算模型的损失和梯度。
  4. 这时使用梯度下降法来更新模型中的变量。
  5. 记录一些训练数据,以便以后能看到它们。
  6. 为每个epoch重复步骤1到5。

epochCount变量是遍历数据集集合的次数。

你花了多少epoch才在测试集上达到90%以上的准确率?

我在12个epoch内,在训练和测试集的准确率都达到了97%以上。

零基础使用Swift学习数据科学

4.8 可视化训练和测试数据

虽然打印出模型的训练进度很有帮助,但是看到可视化图像通常更有帮助。

让我们将在模型训练期间捕获的训练和测试统计数据可视化。

这是训练和测试精度在训练过程中的演变过程:

零基础使用Swift学习数据科学

5.数据科学Swift的未来

行业专家们对Swift的反应是令人难以置信的,感觉它不仅有潜力成为数据科学的主流语言,而且它也是用于在现实世界构建基于机器学习的应用程序。

目前,它还处于起步阶段,围绕数据科学和数值计算的库仍在发展中。然而,它背后有强大的行业支持,我期待着未来它将拥有一个丰富的工具和库生态系统(甚至可能比现在的Python更好)。

这里有几个Swift的库,你可以进一步探索:

  • Nifty (Demo):这是一个通用的Swift编程语言的数值计算库。
  • Github
  • Swiftplot:用于数据可视化的Swift库。
  • Github
  • Swift的TensorFlow:是下一代机器学习平台。
  • Github

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读