TensorFlow 学习指南 三、学习

  • 时间:
  • 浏览:0
  • 来源:彩神官网

这种 代码是中间的有另好多个小改动。 首先,我们我们我们我们 我们我们我们我们 创建有另好多个列表来存储误差。而且,在循环内部内部结构,我们我们我们我们 我们我们我们我们 显式地计算train_op和误差。 我们我们我们我们 我们我们我们我们 在一行中执行此操作,而且误差仅计算一次。 可能性我们我们我们我们 我们我们我们我们 在单独的行中曾经做,它将计算误差,而且是训练步骤,而且在曾经做时,它将还要重新计算误差。

此代码选择每个样本的最近索引,并使用tf.dynamic_partition将哪好多个索引分到单独的组中。 从这里现在开始,我们我们我们我们 我们我们我们我们 在有另好多个组中使用tf.reduce_mean来查找该组的平均值,从而形成新的质心。 我们我们我们我们 我们我们我们我们 只需将它们连接起来形成我们我们我们我们 我们我们我们我们 的新质心。

唯一真正的变化是import语录和模型,它来自不同的可用算法列表。 有另好多个区别是分类器还要知道它将预测好多个个类,能能 使用len(set(y_train))找到,可能性换句话说,训练数据含高好多个个唯一值。

结果显示每个类的召回率和精度,以及总体值和 f 度量。哪好多个分数比准确性更可靠,更多信息请参阅维基百科上的此页面。

我们我们我们我们 我们我们我们我们 能能 使用pyplot.imshow显示其含高另好多个图像。 在这里,我设置interpolation ='none'来详细按原样查看数据,而且可能性你删除这种 属性,它会变得更清晰(也尝试减小数字大小)。

这里的主要兴趣点是train_op = tf.train.GradientDescentOptimizer(0.01).minimize(error),其中定义了训练步长。 它旨在最小化误差变量的值,该变量先前被定义为差的平方(常见的误差函数)。 0.01 是尝试学习更好的值所需的步长。

机器学习是有一种概念,构建从数据中学习的算法,以便对新数据执行操作。 在这种 情况汇报下,这原困我们我们我们我们 我们我们我们我们 有而且 输入的训练数据和预期结果 - 训练目标。 我们我们我们我们 我们我们我们我们 将看看著名的数字数据集,这是一堆手绘数字的图像。 我们我们我们我们 我们我们我们我们 的输入训练数据是几千个哪好多个图像,我们我们我们我们 我们我们我们我们 的训练目标是预期的数字。

1)将分类器更改为DNNClassifier并重新运行。随意告诉所有我们我们我们我们 我们我们我们我们 你现在使用深度1学习来做数据分析。

要了解这是多么准确,我们我们我们我们 我们我们我们我们 能能 使用 NumPy 计算准确度:

现在我们我们我们我们 我们我们我们我们 有了这种 每种,我们我们我们我们 我们我们我们我们 能能 将哪好多个调用加进到我们我们我们我们 我们我们我们我们 的脚本中(可能性创建有另好多个新脚本):

任何机器学习库都还要具有梯度下降算法。 我认为这是有另好多个定律。 无论怎么才能 才能 ,Tensorflow 在主题上有而且 变化,它们能能 直接使用。

请注意,我从这种 页面借用了而且 代码,哪好多个代码具有不类事型的 k-means 算法,以及而且 而且 有用的信息。

在 scikit-learn 中,我们我们我们我们 我们我们我们我们 能能 构建有另好多个简单的分类器,训练它,而且使用它来预测图像的数字,只需使用四行代码:

k-means 算法从初始质心的选择现在开始,初始质心本来数据中实际质心的随机猜测。 以下函数将从数据集中随机选择多个样本作为此初始猜测:

第一行本来导入支持向量机模型,这是有一种流行的机器学习辦法 。

1)创建第 6 课中的 k-means 示例的收敛函数,可能性旧质心与新质心之间的距离小于给定的epsilon值,则停止训练。

Scikit-learn 是有另好多个用于数据挖掘和分析的 Python 包,它非常受欢迎。 这是可能性它广泛支持不同的算法,令人惊叹的文档,以及庞大而活跃的社区。 而且 有另好多个因素是它的一致接口,它的 API,允许我们我们我们我们 我们我们我们我们 构建能能 使用 scikit-learn 辅助函数训练的模型,并允许我们我们我们我们 我们我们我们我们 非常容易地测试不同的模型。

这里的主要变化是,循环现在是有另好多个while循环,测试(tf.less用于小于测试)为真时继续循环。 在这里,我们我们我们我们 我们我们我们我们 测试x是是否小于给定阈值(存储在常量中),可能性是,我们我们我们我们 我们我们我们我们 继续循环。

运行此操作会将得到与中间类事的图像,但质心将处在随机位置。 尝试运行此脚本好多个,注意质心移动了不多不多不多不多。

1)传递给generate_samples的种子选项可确保每次运行脚本时,“随机”生成的样本有的是一致的。 我们我们我们我们 我们我们我们我们 越来越将种子传递给choose_random_centroids函数,这原困每次运行脚本时哪好多个初始质心有的是同。 更新脚曾经为随机质心含高新的种子。

此代码将:

我们我们我们我们 我们我们我们我们 现在冒险进入我们我们我们我们 我们我们我们我们 的第有另好多个应用,即使用 k-means 算法进行聚类。 聚类是有一种数据挖掘练习,我们我们我们我们 我们我们我们我们 获取少许数据并找到彼此类事的点的分组。 K-means 是有一种非常善于在而且 类型的数据集中查找簇的算法。

2)DNNClassifier的默认参数是好的,但不完美。尝试更改参数来获得更高的分数。

第三行使用数据来训练模型。 在这种 行(这是该代码的大每种“工作”)中,调整 SVM 模型的内部内部结构情况汇报来拟合训练数据。 我们我们我们我们 我们我们我们我们 还传递digits.data,可能性这是有另好多个展开的数组,是该算法的可接受输入。

首先,我们我们我们我们 我们我们我们我们 还要生成而且 样本。 我们我们我们我们 我们我们我们我们 能能 随机生成样本,但这可能性会给我们我们我们我们 我们我们我们我们 提供非常稀疏的点,可能性本来有另好多个大分组 - 对于聚类来说并有的是非常令人兴奋。

结果仍然非常好,为宜 98%,但这种 数据集在数据挖掘中是众所周知的,其价值形式已有详细记录。 无论怎么才能 才能 ,我们我们我们我们 我们我们我们我们 现在知道我们我们我们我们 我们我们我们我们 要做哪好多个,我让你们我们我们我们我们 在 TFLearn 中实现它!

这种 辦法 的工作辦法 是随机创建n_clusters个不同的质心(使用np.random.random((1, n_features)))并将它们用作tf.random_normal的质心。 tf.random_normal函数生成正态分布的随机值,为甚我让你们我们我们我们我们 将其加进到当前质心。 这会在该形心付近创建而且 点。 为甚我让你们我们我们我们我们 记录质心(centroids.append)和益成的样本(slices.append(samples))。 最后,我们我们我们我们 我们我们我们我们 使用tf.concat创建“有另好多个大样本列表”,并使用tf.concat将质心转换为 TensorFlow 变量。

下面我把代码插进上有另好多个程序运行的tf.global_variables_initializer()行下面 - 这种 行中间的所有内容有的是一样的。

原文:LearningTensorFlow.com

最后,最后一行使用这种 训练好的分类器来预测而且 数据的类,在这种 情况汇报下再次是原始数据集。

这里有另好多个重要的注意事项是,我们我们我们我们 我们我们我们我们 只优化了有另好多个值,但该值本来是否有另好多个数组。 这本来为哪好多个我们我们我们我们 我们我们我们我们 使用w作为变量,而有的是有另好多个单独的变量ab

我让你们我们我们我们我们 从有另好多个基本的例子现在开始:

这是有另好多个分类任务,是数据挖掘最常见的应用之一。 还有而且 称为回归和聚类的变体(以及而且 而且 变体),但在本课中我们我们我们我们 我们我们我们我们 不不涉及它们。

这段代码首先为每个样本创建有另好多个索引(使用tf.range(0, n_samples),而且随机打乱它。从那里,我们我们我们我们 我们我们我们我们 使用tf.slice选择固定数量(n_clusters)的索引。哪好多个索引与我们我们我们我们 我们我们我们我们 的初始质心相关,而且使用tf.gather组合在一并形成我们我们我们我们 我们我们我们我们 的初始质心数组。

结果非常令人印象深刻(近乎完美),但哪好多个很重误导。 在数据挖掘中,你永远不应该在用于训练的相同数据上评估你的模型。 潜在的难题被称为“过拟合”,其中模型准确地学习了训练数据所需的内容,而且无法很好地预测新的没见过的数据。 为防止这种 难题,我们我们我们我们 我们我们我们我们 还要拆分我们我们我们我们 我们我们我们我们 的训练和测试数据:

3)我们我们我们我们 我们我们我们我们 的例子一次只训练有另好多个示例,这是低效的。 扩展它来一次使用多个(类事 50 个)训练样曾经学习。

更新generate_samples.py,通过将import plot_clusters加进到文件顶部来导入此函数。 而且,将这行代码加进到底部:

曾经区别是,还要告知分类器预期的价值形式类型。 对于这种 例子,我们我们我们我们 我们我们我们我们 有真正重要的连续价值形式,不多不多不多不多我们我们我们我们 我们我们我们我们 能能 简单地指定feature_columns值(它还要在列表中)。 可能性你使用类别价值形式,则还要单独说明。 这方面的更多信息,请查看 TFLearn 示例的文档。

将这种 新的choose_random_centorids函数加进到functions.py中,并创建有另好多个新脚本(或更新前有另好多个脚本),写入以下内容:

这种 辦法 的工作辦法 是计算每个样本和每个质心之间的距离,这通过distances =那行来实现。 这里的距离计是否欧几里德距离。 这里重要的而且 是tf.subtract会自动扩展有另好多个参数的大小。 这原困将我们我们我们我们 我们我们我们我们 作为矩阵的样本,和作为列向量的质心将在它们之间产生成对减法。 为了实现,我们我们我们我们 我们我们我们我们 使用tf.expand_dims为样本和质心创建有另好多个额外的维度,强制tf.subtract的这种 行为。

梯度下降是有一种学习算法,尝试最小化而且 误差。 你问哪个误差? 嗯,这取决于我们我们我们我们 我们我们我们我们 ,觉得有而且 常用的辦法 。

第二行构建“空白”分类器,gamma设置为 0.001。

译者:飞龙

所有哪好多个代码有的是使用不同的颜色绘制每个簇的样本,并在质心位置创建有另好多个大的红色X。 质心提供为参数,稍一定会很方便。

TensorFlow Learn 接口距离 scikit-learn 的接口不能能 一小步之遥:

协议:CC BY-NC-SA 4.0

对于簇和 k-means的 更多信息,请参阅 k-means 算法的 scikit-learn 文档或观看此视频。

下一步代码防止质心更新:

你可能性可能性注意到我在这里采用窗口平均值 - 使用np.mean(errors[i-50:i])而有的是仅使用errors[i]。 曾经做的原困是我们我们我们我们 我们我们我们我们 只在循环中测试一次,不多不多不多不多觉得误差会减小,但它会反弹不多不多不多不多。 采用这种 窗口平均值能能 平滑而且 ,但正如你在中间所看多的,它仍然会跳跃。

译者注:原文推荐随机梯度优化器,在所有优化器里是最烂的,已更改。

我们我们我们我们 我们我们我们我们 来看看 scikit-learn 的 API,但首先我们我们我们我们 我们我们我们我们 还要而且 数据。 以下代码加载了一组能能 使用matplotlib.pyplot显示的数字图像:

在现在开始对质心位置进行而且 猜测以前,而且 k-means 算法基于数据更新哪好多个猜测。 该过程是为每个样本分配有另好多个簇号,表示它最接近的质心。 以前,将质心更新为分配给该簇的所有样本的平均值。 以下代码防止分配到最近的簇的步骤:

在本教程中,我们我们我们我们 我们我们我们我们 将查看 TensorFlow Learn,它是名为skflow的软件包的新名称。 TensorFlow Learn(以下简称:TFLearn)是有另好多个机器学习包装器,基于 scikit-learn API,允许你轻松执行数据挖掘。 这原困哪好多个? 我让你们我们我们我们我们 一步一步地完成它:

哪好多个教程主要关注 TensorFlow 的机制,但真正的用例是机器学习。 TensorFlow 有而且 用于构建机器学习模型的辦法 ,其中而且 能能 在官方 API 页面上找到。 哪好多个函数允许你从头现在开始构建模型,包括自定义层面,类事怎么才能 才能 构建神经网络中的层。

TensorFlow 有一整套优化器,为甚我让你也能能 定义当时人的优化器(可能性你对类事事感情语录的语录兴趣)。 怎么才能 才能 使用它们的 API,请参阅此页面。 列表如下:

2)尝试从梯度下降示例(w)中分离ab值。

大多数人工智能和机器学习的关键组成每种是循环,即系统在多次训练迭代中得到改善。 以这种 辦法 训练的有一种非常简单的辦法 ,本来在for循环中执行更新。 我们我们我们我们 我们我们我们我们 在第 2 课中看多了这种 辦法 的有另好多个例子:

这是 k-means 的单次迭代! 我鼓励我们我们我们我们 我们我们我们我们 练习一下,把它变成有另好多个迭代版本。

3)从 TFLearn 的文档中查看此示例并下载 CIFAR 10 数据集。构建有另好多个使用卷积神经网络预测图像的分类器。我让你使用此代码加载数据:

能能 像以前一样评估结果,来计算准确性,但 scikit-learn 有 classification_report,它提供了更深入的了解:

已更新到最新的 TFLearn API。

2)迭代地执行 k 均值算法,其中来自以前迭代的更新的质心用于分配簇,而且用于更新质心,等等。 换句话说,算法交替调用assign_to_nearestupdate_centroids。 在停止以前,更新代码来执行此迭代 10 次。 我让你发现,随着 k-means 的更多迭代,得到的质心平均上更接近。 (对于哪好多个对 k-means 有经验的人,未来的教程将研究收敛函数和而且 停止标准。)

我们我们我们我们 我们我们我们我们 能能 改变此工作流,使用变量来收敛循环,如下所示:

这本来设置了簇和价值形式的数量(我建议将价值形式的数量保持为 2,以便我们我们我们我们 我们我们我们我们 以前能能 可视化它们),以及要生成的样本数。 增加embiggen_factor将增加簇的“散度”或大小。 我在这里选择了有另好多个提供良好学习可能性的值,可能性它能能 生成视觉上可识别的集群。

create_samples辦法 保处在名为functions.py的文件中,允许我们我们我们我们 我们我们我们我们 为这种 (以及下有另好多个!)课程,将哪好多个辦法 导入到我们我们我们我们 我们我们我们我们 的脚本中。 创建有另好多个名为generate_samples.py的新文件,其含高高以下代码:

运行generate_samples.py现在应该提供以下绘图:

任务是学习有另好多个模型,能能 回答“这是哪好多个数字?”,对于曾经的输入:

这里的主要变化是我们我们我们我们 我们我们我们我们 为哪好多个初始质心创建变量,并在会话中计算其值。 而且,我们我们我们我们 我们我们我们我们 将初始猜测绘制到plot_cluster,而有的是用于生成数据的实际质心。

可能性你想了解数据挖掘的更多信息,请查看我的书“Python 数据挖掘”。

而且 优化辦法 可能性会再次出现在 TensorFlow 的未来版本或第三方代码中。 也本来说,上述优化对于大多数深度1学习技术来说可能性足够了。 可能性你不选择要使用哪有另好多个,请使用AdamOptimizer,除非失败。

自豪地采用谷歌翻译

这是 TFLearn 的高级概述。我让你定义自定义分类器,你将在练习 3 中看多它们,并将分类器组合到流水线中(对此的支持很小,但正在改进)。该软件包有可能性成为工业和学术界广泛使用的数据挖掘软件包。

为了使结果可视化,我们我们我们我们 我们我们我们我们 使用matplotlib创建绘图函数。 将此代码加进到functions.py

相反,我们我们我们我们 我们我们我们我们 将从生成有另好多个质心现在开始,而且在该点付近随机选择(具有正态分布)。 首先,这是有另好多个执行此操作的辦法

猜你喜欢

与按不同的浏览器统计访问量相关精彩内容

作者:thinktothings2092人浏览##功能描述-nginx日志统计分析自动报表工具goaccess(推荐)-网站总访问量统计,按天统计访问量,按页面(不同URL)统

2020-01-20

1月30日云栖精选夜读:马来西亚引入中国人工智能 ,阿里云ET城市大脑为吉隆坡治堵

3月80日云栖精选夜读:三分钟,你想对世界说哪些丨蚂蚁金服发起青年导演公益短片计划6月11日云栖精选夜读丨普京点赞中国数字经济眼前 阿里巴巴正在改变俄罗斯商业《云栖精选》第7

2020-01-19

阿里巴巴iDST+阿里视频云:计算机视觉和机器学习在消费级视频中的应用

【云周刊】第155期:助APP尽情“撒币”,直播答题肩上的技术实现难度究竟几何?阿里巴巴iDST首席科学家兼副院长任小枫:最看好计算机视觉在这四大新零售细分方向的应用北京云栖大

2020-01-19

为什么有时候会因为男朋友的一句话心痛一下么

换一换你对你这名回答的评价是?可选中另另一个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个疑问。 我来答有点推荐展开全部不可能 你很在乎他并且 尽量想

2020-01-19

PostgreSQL Tutorial | psql的使用

16.psql支持输出格式化的命令,可能允许买车人定制输出的格式如此边框的列输出postgres=#SELECTversion();使用\g执行上四根命令,即SELECTver

2020-01-19