当前位置:首页 >> 中医减肥 >> 对彩色花图像进行时分类-基于R语言的Keras实现

对彩色花图像进行时分类-基于R语言的Keras实现

发布时间:2023-04-25

../flower_images',image_paths[i],sep = '/')) # 变量调用图形 + plot(img) # 绘制图形 + text(x = 64,y = 0, + label = names[flowers[flowers $file==image_paths[i], 'label']+1], + adj = c(0,1),col = 'white',cex = 3) # 添加首页 + } > par(op)

示例image_loading变量,借助逐步将flower_iamges的彩色图形变量调用到R中的,并顺利进行原始数据转成,使其翻倍合理最深处研读数学模型时所须的比值矩阵。

> # 示例图形原始数据变量调用及转成变量 > image_loading <- function(image_path) { + image <- image_load(image_path, target_size=c(128,128)) + image <- image_to_array(image) / 255 + image <- array_reshape(image, c(1, dim(image))) + return(image) + }

转化lapply变量读取flower_images目录中的的210张花彩色图形,由于返回结果为列出,所以便次借助array_reshape变量对其顺利进行转成。

> image_paths <- list.files('../flower_images',+ pattern = '.png', + full.names = TRUE) > flower_tensors <- lapply(image_paths, image_loading)> flower_tensors <- array_reshape(flower_tensors,+ c(length(flower_tensors),128,128,3)) > dim(flower_tensors)[1] 210 128 128 3> dim(flower_targets)[1] 210 10

我们借助caret包的createDataParitition变量对原始数据顺利进行等%抽样,使得抽样后的锻炼集和检验集中的的各类型占比与原原始数据一样。

># 等%抽样>index <- caret::createDataPartition(flowers $label,p = 0.9,list = FALSE) # 锻炼集的下标集>train_flower_tensors <- flower_tensors[index,,,] # 锻炼集的比值 >train_flower_targets <- flower_targets[index,] # 锻炼集的因变量>test_flower_tensors <- flower_tensors[-index,,,] # 检验集的比值 >test_flower_targets <- flower_targets[-index,] # 检验集的因变量

▌MLP静态创始及预见

首先紧密转化一个单纯的多层感知机人脑,借助锻炼集原始数据对网络顺利进行锻炼。都有实例借助静态创始、编译及锻炼。

> mlp_model <- keras_model_sequential> > mlp_model %>% + layer _dense(128, input_shape=c(128 *128*3)) %>% + layer_activation("relu") %>% + layer _batch_normalization %>% + layer_dense(256) %>% + layer_activation("relu") %>% + layer _batch_normalization %>% + layer_dense(512) %>% + layer_activation("relu") %>% + layer _batch_normalization %>% + layer_dense(1024) %>% + layer_activation("relu") %>% + layer_dropout(0.2) %>% + layer_dense(10) %>% + layer_activation("softmax") > > mlp_model %>%+ compile(loss="categorical_crossentropy",optimizer="adam",metrics="accuracy") > > mlp_fit %+ fit( + x=array _reshape(train_flower_tensors, c(length(index),128 *128*3)), + y=train _flower_targets, + shuffle=T, + batch_size=64, + validation_split=0.1, + epochs=30 + )

> options(repr.plot.width=9,repr.plot.height=9)> plot(mlp_fit)

静态显现导致过近似震荡。锻炼集在第8个锻炼周期时权重从未翻倍1,此时验证集的权重仅有0.3,且后来锻炼周期的验证集权重呈现下降趋势。

便一,借助predict_classes对检验集顺利进行类型预见,并查询每个检验采样的实际首页及预见首页。

>pred_label % +predict_classes(x=array_reshape(test_flower_tensors,+c(dim(test_flower_tensors)[1],128*128*3)),+verbose = 0) # 对检验集顺利进行预见>>result <- data.frame(flowers[-index,], # 检验集实际首页+'pred_label' = pred_label) # 检验集预见首页>result$isright <- ifelse(result$label==result$pred_label,1,0) # 判断预见是否正确>result # 查询结果filelabel pred_label isright100010.png 0 0 1170017.png 0 9 0300030.png 6 1 0350035.png 3 5 0430043.png 7 7 1450045.png 1 0 0520052.png 4 8 0600060.png 8 0 0640064.png 8 8 1700070.png 4 8 0710071.png 9 5 0760076.png 3 5 0950095.png 1 1 11230123.png 4 5 01600160.png 3 5 01620162.png 9 7 01970197.png 6 3 02010201.png 1 5 0207 0207.png 0 0 1

在19个锻炼采样中的,仅有5个采样的首页被预见正确,分作0010.png、0043.png、0064.png、0095.png和0207.png。

检验集的整体权重为26.3%,也就是说比基准线10%(总共10个类型,随便乱摸都有10%摸对的可能)好一些。或许,此静态的结果是不有点令人满意的。下一步将紧密转化一个单纯的频域人脑(CNN),查询静态的预见并能。

▌CNN静态创始与预见

此例子我们的频域人脑只包含一个频域层,都有实例借助静态创始、编译及锻炼。

> cnn_model %>%+ layer _conv_2d(filter = 32, kernel _size = c(3,3), input_shape = c(128, 128, 3)) %>% + layer_activation("relu") %>% + layer _max_pooling _2d(pool_size = c(2,2)) %>% + layer_flatten %>% + layer_dense(64) %>% + layer_activation("relu") %>% + layer_dropout(0.5) %>% + layer_dense(10) %>% + layer_activation("softmax") > > cnn_model %>% compile(+ loss = "categorical_crossentropy", + optimizer = optimizer_rmsprop(lr = 0.001, decay = 1e-6), + metrics = "accuracy" + ) > cnn_fit %+ fit( + x=train _flower_tensors, + y=train _flower_targets, + shuffle=T, + batch_size=64, + validation_split=0.1, + epochs=30 + ) > plot(cnn_fit)

CNN效果突出优于MLP。借助锻炼好的CNN静态对检验集顺利进行预见,并计算检验集的整体权重。

>pred_label1 % + predict_classes(x=test_flower_tensors,+ verbose = 0) # 对检验集顺利进行预见>>cnn_result <- data.frame(flowers[-index,], # 检验集实际首页+ 'pred_label' = pred_label1) # 检验集预见首页>cnn_result $isright<- ifelse(cnn_result $label==cnn_result $pred_label,1,0) #判断预见正确性># cnn_result # 查询结果># 查询检验集的整体权重>cat(paste( '检验集的权重为:', + round(sum(cnn_result$isright)*100/dim(cnn_result)[1],1),"%"))检验集的权重为: 57.9 %

CNN静态对检验集的预见权重翻倍58%,远优于MLP静态。

本书便一侧还借助原始数据减弱新技术进一步减弱静态权重。通过原始数据减弱新技术静态对检验集的预见权重翻倍68%,是个不小的突飞猛进。

Microsoft最众所周知研究员(MVP)

Microsoft最众所周知研究员是Microsoft公司颁赠第三方新技术从业人员的一个全球奥斯卡奖。29年来,世界各地的新技术社四区领导者,因其在线上和都将的新技术社四区中的回馈人力资源和实战经验而获得此奥斯卡奖。

MVP是经过完全合理挑选的研究员团队,他们代表着新技术最纯熟且最具智慧的人,是对社四区转为非常大的热情并乐于助人的研究员。MVP致力于通过演讲、论坛问答、创始网站、合著博客、回馈录像、开源项目、组织会议等方式来帮助他人,并最大者程度地帮助Microsoft新技术社四区用户应用于 Microsoft 新技术。

更多详情请登录官方网站:

m/zh-cn

谢谢你读完了本文!爱戴在文章四区留言板回馈你的期望,并且发来到朋友圈。

瞩目Microsoft开发团队MSDN

长春生殖感染检查费用
南京妇科医院哪家好点
沈阳肛肠医院哪个最好
关节僵硬怎么办吃什么药
骨关节炎疼痛吃什么药
标签:
友情链接: