TensorFlow—机器学习的基本介绍

总结

当我第一次学习机器学习时,我总是被某些问题吓倒,比如“我应该使用什么编程语言?”、“我从哪里开始?”、“机器学习到底是什么?”以及这些问题的许多其他变体。值得庆幸的是,机器学习的核心实际上并不依赖于编程语言,而是学习机器学习的核心基础知识。

什么是机器学习?

让我们看看维基百科关于机器学习的定义:

“机器学习 (ML) 是对通过经验自动改进的计算机算法的研究,它被视为人工智能的一部分。机器学习算法基于样本数据构建模型,称为“训练数据”,以便在没有明确编程的情况下做出预测或决策。”

现在你已经对机器学习有了一个非常基本的理解,让我们来看看2种常见的机器学习类型,它们是无监督的和监督式学习的。

无监督式学习

无监督学习允许我们在不给数据任何标签的情况下找到数据集中的内在逻辑,虽然这听起来很酷,但这种方法可能会降低数据准确性。这种方法允许机器学习模型独立工作,发现数据集中的逻辑,标记可能根本没有标记的数据等。但是正如前面提到的,它可能不是解决特定问题的最准确的方法。有些人告诉我,非监督式学习几乎就像是没有老师的机器学习,而监督式学习就是和老师一起学习的机器学习。

另一种方法是有监督学习,使我们有可能通过使用机器学习模型获得更高的准确性。

有监督学习

通过有监督学习,机器学习模型被赋予一个实际学习的数据集,然后该模型可以对其他数据点进行给定精度的预测。如前所述,这种方法基本上就是和老师一起学习。

有监督机器学习的一个经典例子是垃圾邮件检测,我们会创建一个包含垃圾邮件的数据集,然后创建一个机器学习模型,并将我们的数据集提供给模型进行学习,当模型可以识别垃圾邮件的时候,我们就可以输入所有的邮件,看看模型是否能够准确地预测一封邮件是不是垃圾邮件。说起来容易做起来难,但它是对监督机器学习是什么的一个高层次的概述。

让我们开始编程吧!

本文我们将实践的项目是通用的图像分类器。首先,神经网络是机器学习的一部分,它根据我们提供给模型的数据做出决策。然后我们将训练这个神经网络,最后我们将看到机器学习模型的准确性。

首先,我们将在这个小项目中使用 TensorFlow,所以让我们从导入 TensorFlow 开始(使用 PIP 安装来安装 TensorFlow) :

import tensorflow as tf

接下来我们要导入 MNIST 数据集,这是一个内置在 TensorFlow 中的常见数据集,我们还要将整数(整数)转换为浮点数(小数) :

mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

输出:

接下来,我们将在模型中选择一个优化器和损失函数,我们使用下面这行代码来实现:

model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation=’relu’),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])

每个例子都将返回一个“logits”或“log-odds”分数向量,每个类一个。Logits 几乎是一个映射概率的函数。

代码如下:

predictions = model(x_train[:1]).numpy()
predictions

输出:

现在,tensorflow 还具有将这些 logits 更改为概率的一些功能,这是执行此操作的代码:

tf.nn.softmax(predictions).numpy() 

输出:

接下来,我们要创建我们之前提到的 logits 的向量,并获取 True 索引的结果并为每个示例返回一个标量,如下所示:

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

接下来,使用如下代码对结果进行优化,减少运行后产生的随机混淆:

loss_fn(y_train[:1], predictions).numpy()
model.compile(optimizer=’adam’,
loss=loss_fn,
metrics=[‘accuracy’])

接下来,我们要调整模型和参数以最小化此特定模型的损失,因此我们将使用“model.fit”命令。另外,一个“epoch”(如下图)基本上是数据集将通过模型处理多少次,使用这段代码来实现:

model.fit(x_train, y_train, epochs=5)

输出:

接下来,让我们来评估这个模型的性能,我们使用下面的代码:

model.evaluate(x_test, y_test, verbose=2)

输出:

最后,让我们的模型输出一个概率,为此我们使用以下代码:

probability_model = tf.keras.Sequential([
model,
tf.keras.layers.Softmax()
])
probability_model(x_test[:5])

输出:

总结

这虽然不是一个机器学习的课程,只是一个简单的介绍,但是让我们对机器学习有了一个大致的了解,让我们看到了他的乐趣!快来动手实践吧~

·  END  ·

HAPPY LIFE

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值