乐趣区

关于数据挖掘:R语言深度学习卷积神经网络-CNN对-CIFAR-图像进行分类训练与结果评估可视化

原文链接: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 应用贝叶斯优化的深度学习

退出移动版