在CIFAR10小图像数据集中训练一个简单的深度CNN。
它在25次测试中下降到0.65,在50次测试后下降到0.55,尽管在这一点上它仍然是欠拟合的。
如果进行数据扩充,您可以尝试在卷积和密集层中增加过滤器的数量。
图书馆(keras)#参数 --------------------------------------------------------------batch_size<-32时代<-50data_augmentation<-假#数据准备 --------------------------------------------------------更多信息请参见?dataset_cifar10cifar10<-dataset_cifar10()
#测试和训练输入中的特征尺度RGB值x_train<-cifar10$火车$x/255x_test<-cifar10$测验$x/255y_train<-cifar10$火车$yy_test<-cifar10$测验$y#定义模型 ----------------------------------------------------------#初始化顺序模型模型<-keras_model_sequential()如果(data_augmentation) {data_augmentation=keras_model_sequential()% > %layer_random_flip(“水平”)% > %layer_random_rotation(0.2)模型<-模型% > %data_augmentation()}模型<-模型% > %#开始隐藏二维卷积层,被提供32x32像素的图像layer_conv_2d(过滤器=16,kernel_size =c(3.,3.),填充=“相同”,input_shape =c(32,32,3.))% > %layer_activation_leaky_relu(0.1)% > %#第二隐藏层layer_conv_2d(过滤器=32,kernel_size =c(3.,3.))% > %layer_activation_leaky_relu(0.1)% > %#使用最大池layer_max_pooling_2d(pool_size =c(2,2))% > %layer_dropout(0.25)% > %# 2额外的隐藏2D卷积层layer_conv_2d(过滤器=32,kernel_size =c(3.,3.),填充=“相同”)% > %layer_activation_leaky_relu(0.1)% > %layer_conv_2d(过滤器=64,kernel_size =c(3.,3.))% > %layer_activation_leaky_relu(0.1)% > %#再次使用最大池layer_max_pooling_2d(pool_size =c(2,2))% > %layer_dropout(0.25)% > %#压平最大过滤输出到特征向量#和饲料到致密层layer_flatten()% > %layer_dense(256)% > %layer_activation_leaky_relu(0.1)% > %layer_dropout(0.5)% > %#从密集层的输出投影到10单位输出层layer_dense(10)
在layer_conv_2d(警告。,过滤器=64,kernel_size =c(3.,3.)): partial argument match of 'filter' to 'filters'
在layer_conv_2d(警告。,过滤器=32,kernel_size =c(3.,3.),填充= "same"): partial argument match of 'filter' to 'filters'
在layer_conv_2d(警告。,过滤器=32,kernel_size =c(3.,3.)): partial argument match of 'filter' to 'filters'
在layer_conv_2d(警告。,过滤器=16,kernel_size =c(3.,3.),填充= "same", : partial argument match of 'filter' to 'filters'
选择<-optimizer_adamax(learning_rate =learning_rate_schedule_exponential_decay(initial_learning_rate =5 e - 3,decay_rate =0.96,decay_steps =1500,楼梯=真正的))模型% > %编译(损失=loss_sparse_categorical_crossentropy(from_logits =真正的),优化器=选择,指标=“准确性”)#培训 ----------------------------------------------------------------模型% > %适合(x_train y_train,batch_size =batch_size,时代=时代,validation_data =列表(x_test y_test),洗牌=真正的)模型% > %评估(x_test y_test)