原文链接:http://tecdat.cn/?p=24386 

本文演示了训练一个简略的卷积神经网络 (CNN) 来对 CIFAR 图像进行分类。因为本教程应用 Keras Sequential API,因而创立和训练咱们的模型只需几行代码。

设置

library(keras)

下载并筹备 CIFAR10 数据集

CIFAR10 数据集蕴含 10 个类别的 60,000 张彩色图像,每个类别有 6,000 张图像。数据集分为 50,000 张训练图像和 10,000 张测试图像。这些类是互斥的,它们之间没有重叠。

验证数据

为了验证数据集看起来是否正确,让咱们绘制训练集中的前 25 张图像并在每张图像下方显示类别名称。 

train %>%   map(as.rater, max = 255) %>%

创立卷积基

上面的6行代码应用一种常见的模式定义了卷积根底:Conv2D和MaxPooling2D层的重叠。

作为输出,CNN承受形态的张量(image\_height, image\_width, color\_channels),疏忽了批次大小。如果你是第一次接触这些维度,color\_channels指的是(R,G,B)。在这个例子中,你将配置咱们的CNN来解决形态为(32,32,3)的输出,这是CIFAR图像的格局。你能够通过将参数input_shape传递给咱们的第一层来做到这一点。
 

kers\_moe\_etl %>%   laer\_c\_2d(fles = 32, ene_sz = c(3,3), acan = "relu",   lye\_apoi\_2d(posize = c(2,2)) %>%   lae\_cv\_2d(filrs = 64, relze = c(3,3), ctitio = "reu")

到目前为止,让咱们展现一下咱们模型的架构。

summary(model)

在下面,你能够看到每个Conv2D和MaxPooling2D层的输入是一个三维形态的张量(高度、宽度、通道)。当你深刻到网络中时,宽度和高度维度往往会放大。每个Conv2D层的输入通道的数量由第一个参数管制(例如32或64)。通常状况下,随着宽度和高度的放大,你能够接受(计算上)在每个Conv2D层中减少更多的输入通道。

在顶部增加密集层

为了实现咱们的模型,您须要将卷积基(形态为 (3, 3, 64))的最初一个输入张量输出一个或多个 Dense 层以执行分类。密集层将向量作为输出(1D),而以后输入是 3D 张量。首先,您将 3D 输入展平(或开展)为 1D,而后在顶部增加一个或多个 Dense 层。CIFAR 有 10 个输入类,因而您应用具备 10 个输入和 softmax 激活的最终 Dense 层。

model %>%   leree(unis = 64, aciaion = "relu") %>%   ayedese(unis = 10, acivin = "sftax")

这是咱们模型的残缺架构。

留神 Keras 模型是可变对象,您不须要在下面的 chubnk 中重新分配模型。
summary(modl)

如您所见,咱们的 (3, 3, 64) 输入在通过两个 Dense 层之前被展平为形态为 (576) 的向量。

编译和训练模型

moel %>% comle(  optier = "adam",  lss = "specatialosnopy",  mecs = "accray")

评估模型

plot(hsy)

 ealte(oel, x,y, erbe = 0)

咱们简略的 CNN 曾经实现了超过 70% 的测试准确率。


 

最受欢迎的见解

1.r语言用神经网络改良nelson-siegel模型拟合收益率曲线剖析

2.r语言实现拟合神经网络预测和后果可视化

3.python用遗传算法-神经网络-含糊逻辑控制算法对乐透剖析

4.用于nlp的python:应用keras的多标签文本lstm神经网络分类

5.用r语言实现神经网络预测股票实例

6.R语言基于Keras的小数据集深度学习图像分类

7.用于NLP的seq2seq模型实例用Keras实现神经机器翻译

8.python中基于网格搜索算法优化的深度学习模型剖析糖

9.matlab应用贝叶斯优化的深度学习