‫现在, 我们已经批量获得了数据｡
‫但要理解一批中发生的事情可能有点困难｡
‫我们来构建一个小函数, 来探索批处理中的内容, 这样我们就可以看到发生了什么｡
‫因为如果我们在这里有这个小输出, 我们内心深处知道这些实际上是图像, 这些是标签｡
‫如果能见到他们就好了｡
‫让我们在这里做一个小标题｡
‫在M上可视化数据批处理命令, 将其转换为减价, 让我们进行一点交流｡
‫一个数据现在是分批的｡
‫但是, 这些可能有点难以理解, 斜线, 理解｡
‫让我们想象一下｡
‫因为我不确定你怎么想, 但我喜欢看实际行动｡
‫为此, 我们将导入可靠的地图绘图库｡
‫看看这个自动建议, 然后我们将创建一个函数, 用于查看数据批处理或数据批处理数据中的图像｡
‫我们澳大利亚人, 澳大利亚口音喜欢把R放在元音的结尾, 不管它们在哪里｡
‫我们可能只显示25张图片, 因为如果我们做的太多, 比如我们有10,000多张, 那么我们可能一次只显示25张｡
‫我们需要图像和标签, 因为我们要做的基本上是绘制一幅图像, 然后在上面放上标签｡
‫又漂亮又简单｡
‫Go显示一个数据批次中25个图像及其标签的图｡
‫好极了｡
‫好吧, 我们来设定一下数字｡
‫想想吧｡
‫我们把它做成无花果大小｡
‫现在, 我有一点经验来设置这个图的大小, 所以希望10 × 10就足够了｡
‫如果不是, 我们可以改变它｡
‫然后, 我们将遍历25, 以显示25个图像｡
‫所以我们只需要为I建立一个简单的循环, 范围是25｡
‫那我们能怎么办？
‫我们需要创造一个次要情节｡
‫让我们做五排｡
‫五列, 因为那是25列｡
‫然后, 我们必须在每个子情节上显示一个图像, 然后为每个图像添加一个标题｡
‫这应该不难｡
‫所以创造支线剧情｡
‫我们要画五行, 五列, 画x等于, 点, 次点, 五, 五加一.
‫这是因为我们有一个导入的地图绘图库, 但这就是为什么文档字符串没有显示｡
‫我们走吧｡
‫参数｡
‫我们要去哪里？
‫它得到了玫瑰列｡
‫这是一个行数｡
‫这是列, 这是索引
‫你只需要知道这些就行了｡
‫显示图像｡
‫一些地图绘图库的点字符串可能有点烦人, 比如当它们变成args关键字args时, 它只是继承了一些其他的类,
‫你真的找不到它｡
‫如果你需要了解它的实际作用, 请查看地图｡
‫绘图库完整的文档｡
‫我们要绘制图像｡
‫因为我们在循环, 所以这是一个图像和标签的数据串｡
‫所以我们要展示图像｡
‫所以我们说的索引, 写图像, 并添加图像标签作为标题｡
‫所以我们要画出标题, 然后画出独特品种, 因为这是我们的列表｡
‫请记住, 如果它仍然生活在记忆中, 它应该是我们的独特的狗的名字名单独特的品种｡
‫获取唯一品种标签｡
‫我们要索引其中的标签标签是最大值｡
‫换句话说, 如果我们去为什么零arg最大？
‫19.
‫这正是我们要做的与线在那里｡
‫独特的品种｡
‫所以这是｡
‫这一行是我们的情节标题｡
‫轰｡
‫明白我所说的d函数化函数是什么意思了吧, 来真正探索到底发生了什么｡
‫所以如果你想弄明白一些东西, 记住你可以把函数拆开, 自己重写代码,
‫因为这是你理解东西的方法｡
‫关闭红线｡
‫事实上, 我们可能会看到它与他们之前｡
‫所以我们很清楚这是怎么回事｡
‫PLT轴｡
‫这是一个非常简单的函数｡
‫显示25个图像｡
‫我们现在需要做什么？
‫因为我们的数据是批处理的, 所以我们需要取消批处理来可视化它, 这样我们就可以通过训练图像来实现这一点｡
‫让我们先看看代码, 然后再看看实际发生了什么｡
‫列车标签等于下一个｡
‫接下来是它从迭代器中返回下一个项｡
‫哦, 谢谢docstring, 因为火车数据是批处理格式的｡
‫因此, 如果我们要训练数据, 我们需要把它变成一个迭代器｡
‫我们走吧｡
‫所以我们可以通过调用方法来实现｡
‫作为NumPy｡
‫迭代器｡
‫它会返回一个迭代器把数据集的所有元素都转换成numpy.
‫所以基本上这是要做的是转动｡
‫哦, 我们走吧｡
‫我们有一些信息｡
‫那些文档字符串对我来说有点难读｡
‫但我们还是从这里过去吧｡
‫它能做什么？
‫所以我们要用批处理数据集｡
‫它将从一个批处理中展开它并将其转换为一个numpy迭代器｡
‫然后感谢next, 它会从迭代器的顶部抓取第一批数据.
‫然后因为它是分裂的, 它是无与伦比的｡
‫训练图像｡
‫所以这个, 这个形状将是第一个返回的东西, 而火车标签将是下一个返回的东西｡
‫所以别相信我的话｡
‫如果有疑问, 请运行代码｡
‫现在, 这个可能需要一点时间来运行的原因是, 如果你还记得我们在这里为我们的数据集宣福的时候｡
‫我们有这个地图功能｡
‫获取图像标签, 它将处理我们的图像｡
‫这就是我们现在使用批处理的原因, 因为无论何时运行它, 它都会在后台处理我们的图像｡
‫好了, 我们走吧｡
‫因此, 现在我们不再处理文件名, 而是处理经过处理的图像｡
‫所以再多一点数据｡
‫这是一个大阵吧？
‫因为我们有火车图像｡
‫这应该是让我们看看它有多长｡
‫你能猜到一批要多久吗？
‫如果是一批中的单个项目？
‫火车标签有多长？
‫真应该在隔壁的牢房里运行这样就不会适得其反了｡
‫我们的数据｡
‫三十二, 三十二｡
‫我们走吧｡
‫所以这就是Nex的用武之地｡
‫所以我们把我们的训练数据作为numpy迭代器或者把它变成一个迭代器｡
‫我们已经把下一个从上面拿下来了｡
‫所以基本上只是把那一批从上面拿下来, 把图像和标签放回去｡
‫不管你要处理的是哪一批, 我们都要处理图像｡
‫所以这就是为什么这是火车图像｡
‫如果您正在处理其他类型的数据, 这将是其他类型的数据,
‫这可能仍然是您的标签, 但它们大约为32, 因为我们的批大小为｡
‫32.
‫现在让我们使用我们的代码, 抱歉, 我们的可视化函数｡
‫现在, 让我们将定型批次中的数据可视化｡
‫我们叫它什么来着？
‫显示25个图像｡
‫训练图像｡
‫列车标签｡
‫好极了｡
‫这就是我们要处理的数据｡
‫这是我们的训练数据｡
‫请注意, 它们都是正方形, 因为我们将它们的大小调整为2比4和2比4｡
‫这就是为什么我想把通道画出来, 因为我们想把边上的垃圾处理掉｡
‫让我们这样做吧, 因为我们要展示图像｡
‫我们再画一次｡
‫太棒了｡
‫这是我们的训练批次｡
‫现在, 如果我们到这里来｡
‫让我们对验证批次进行同样的可视化操作｡
‫我们再来一遍｡
‫哦, 事实上, 我想给你看一些东西, 这将突出的区别｡
‫如果我们把这个复制到这里, 我们也可以删除它｡
‫这就是我要找的东西｡
‫每次我们运行这个｡
‫请注意这一只, 萨鲁基, 西藏梗｡
‫请记住这五张图片｡
‫现在让我们再运行一次｡
‫我们可以看到第一行是如何不同的, 你会注意到其余的实际上也是不同的｡
‫你觉得这是为什么
‫这是因为如果我们在这里创建一个训练批处理, 每次调用训练批处理时, 它都会对数据进行重排｡
‫如果我们在运行的时候再做一次, 我们会为验证集写出一个｡
‫现在, 让我们将验证集可视化, 然后开始｡
‫瓦尔图像｡
‫瓦尔Labels等于下一个验证程序点作为迭代器数
‫好极了｡
‫然后我们会展示25张图片, 然后我们就走｡
‫瓦尔图像｡
‫瓦尔标签｡
‫所以我们会运行它｡
‫我们注意到这里有一些不同的｡
‫嘿, 看那个｡
‫那家伙抱着小狗｡
‫我可以这样做一整天｡
‫看看那东西｡
‫那只小狗有多可爱？
‫所以我们再运行一次｡
‫请注意这一条｡
‫还记得这家伙抱着他的狗吗？
‫还记得这个看起来像浴帘的吗？
‫所以我们要进行培训｡
‫请注意这一点, 以便进行验证｡
‫记住浴缸里的这只狗和椅子下的这只｡
‫啊, 我们看到训练图像发生了变化, 因为如果我们返回, 当我们创建数据批时,
‫我们每次创建批时都会对训练图像进行洗牌｡
‫对于我们的验证, 浴缸中的这一个仍然在这里, 因为我们来到了创建验证批次的地方｡
‫我们不打乱验证数据｡
‫现在, 继续思考为什么这可能是重要的｡
‫我们稍后会谈到这个问题｡
‫我知道我已经说过几次了, 但我只是想让你暂时考虑一下｡
‫现在, 我们已经可视化了, 我们已经创建了数据批, 现在我们已经可视化了它们, 以便在我们的头脑中更有意义｡
‫我认为唯一的下一步是看看我们能做些什么来建立和训练一个模型｡
‫让我们在下一个视频中继续讨论这个问题｡