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

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

发布时间:2023-04-25

p = '/')) # null图形 + 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的彩色图形null到R中会,并展开资料匹配,使其大幅提高符合深度努力学习建模时所需的比值矩阵。

> # 自定义图形资料null及匹配变量 > 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%猜对的可能)好一些。只不过,此假设的结果是不实在太令人满意的。下一步将构建一个有趣的DFT数据分析(CNN),提示假设的计算能力。

▌CNN假设确立与计算

此与此相关我们的DFT数据分析只纸制含一个DFT层,下述程序在实现假设建立、编译及锻炼。

> 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%,是个并不大的持续发展。

IBM最有意思医学专家(MVP)

IBM最有意思医学专家是IBM公司授予第三方系统设计专业人士的一个全球特别奖。29年来,世界性的系统设计社四区内领导者,因其离线上和线下的系统设计社四区内中会共享知识和经验而赢得此特别奖。

MVP是经过严格挑选的医学专家制作团队,他们代表人着系统设计最精湛且最具智慧的人,是对社四区内投入非常大的热情并体贴的医学专家。MVP积极参与通过演讲、交流会摘要、建立网站、撰写博客、共享图片、开源项目、组织全会等形式来努力他人,并最大往往地努力IBM系统设计社四区内用户运用于 Microsoft 系统设计。

更为多详情请登录网站:

m/zh-cn

谢谢你读过了本文!赞许在评论四区推特共享你的想法,并且发帖到朋友圈。

关注IBM开发者MSDN

南京肛肠检查
杭州男科专科医院
新乐敦和乐珠都可以治疗眼涩吗
沈阳白癜风治疗费用是多少
颈肩腰腿痛吃什么药效果好
标签:
友情链接: