java cnn图像识别_点击鼠标完成CNN(卷积神经网络)图片识别(以MNIST为例)

本文介绍了如何利用WEKA的Deeplearning4j插件,通过简单的步骤快速搭建CNN网络,完成MNIST手写数字的识别。文章详细阐述了从安装JAVA环境、WEKA及Deeplearning4j插件,到加载数据、配置参数、启动训练的过程,最终展示了一个100%识别率的结果。虽然小样本数据集可能导致过拟合,但CNN在大量数据上的高准确率潜力凸显其在深度学习领域的优势。
摘要由CSDN通过智能技术生成

作为人工智能的核心,机器学习是一个发展了很多年的技术体系,专门研究计算机怎样学习获取新的知识或技能;传统上有决策树、随机森林、人工神经网络、贝叶斯学习等算法。

人工神经网络(Artificial Neural Network,ANN ),是人工智能领域1980s以来的研究热点,但受限于算力,传统的机器学习使用基于单隐藏层神经网络的多层感知器(MLP),和决策树、随机森林等算法相比并无优势。

进入21世纪,因为算力的巨大提升,基于多隐藏层的深度神经网络(Deep Neural Networks,DNN)开启了一个深度学习(DL, Deep Learning)的新时代!其中卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习(deep learning)的代表算法,CNN魔法般的图形识别能力是人工智能时代最激动人心的进展之一。

我们现在基于WEKA软件的Deeplearning4j插件,花费2分钟构建一个CNN网络,完成图片识别领域最著名的例题MNIST手写数字的识别。

一、软件准备:

1JAVA环境

2WEKA:

3Deeplearning4j插件

二、安装

1.java环境和WEKA分别点exe安装

2. Deeplearning4j插件安装:打开WEKA界面,选Tools-package manager,点界面最右上的File/URL-Browse,选择下载的Deeplearning4j安装包,点OK等待安装完成,之后关闭package manager窗口。

三、分析

<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用MATLAB实现卷积神经网络CNN并用于Mnist数据集分类的步骤: 1. 导入Mnist数据集 Mnist数据集是一个手写数字的数据集,包含了60,000张训练图片和10,000张测试图片,每张图片大小为28x28。可以通过MATLAB内置函数 `digitDataset` 来导入Mnist数据集。 ``` % 导入Mnist数据集 digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ... 'nndatasets','DigitDataset'); digitData = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true,'LabelSource','foldernames'); ``` 2. 划分训练集和测试集 使用 `splitEachLabel` 函数来划分训练集和测试集,将60,000张训练图片划分为50,000张训练图片和10,000张验证图片。 ``` % 划分训练集和测试集 [trainDigitData,testDigitData] = splitEachLabel(digitData,0.8,'randomized'); ``` 3. 定义卷积神经网络 使用 `convolution2dLayer` 函数来定义卷积层,使用 `maxPooling2dLayer` 函数来定义池化层,使用 `fullyConnectedLayer` 函数来定义全连接层,使用 `softmaxLayer` 函数来定义输出层。然后将这些层堆叠起来,使用 `layerGraph` 函数来定义卷积神经网络。 ``` % 定义卷积神经网络 layers = [ imageInputLayer([28 28 1]) convolution2dLayer(5,20,'Padding',0) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(5,50,'Padding',0) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(500) reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer]; lgraph = layerGraph(layers); ``` 4. 训练卷积神经网络 使用 `trainingOptions` 函数来定义训练选项,包括学习率、最大训练轮数、每轮训练的批次大小等。然后使用 `trainNetwork` 函数来训练卷积神经网络。 ``` % 训练卷积神经网络 options = trainingOptions('adam', ... 'InitialLearnRate',0.0001, ... 'MaxEpochs',20, ... 'MiniBatchSize',128, ... 'ValidationData',testDigitData, ... 'ValidationFrequency',10, ... 'Verbose',false, ... 'Plots','training-progress'); net = trainNetwork(trainDigitData,lgraph,options); ``` 5. 测试卷积神经网络 使用 `classify` 函数来测试卷积神经网络,将测试图片输入卷积神经网络中,得到对应的输出结果。 ``` % 测试卷积神经网络 testLabels = classify(net,testDigitData); accuracy = sum(testLabels == testDigitData.Labels)/numel(testLabels); fprintf('准确率为%.2f%%。\n',accuracy*100); ``` 完整的代码如下: ``` % 导入Mnist数据集 digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ... 'nndatasets','DigitDataset'); digitData = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true,'LabelSource','foldernames'); % 划分训练集和测试集 [trainDigitData,testDigitData] = splitEachLabel(digitData,0.8,'randomized'); % 定义卷积神经网络 layers = [ imageInputLayer([28 28 1]) convolution2dLayer(5,20,'Padding',0) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(5,50,'Padding',0) batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(500) reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer]; lgraph = layerGraph(layers); % 训练卷积神经网络 options = trainingOptions('adam', ... 'InitialLearnRate',0.0001, ... 'MaxEpochs',20, ... 'MiniBatchSize',128, ... 'ValidationData',testDigitData, ... 'ValidationFrequency',10, ... 'Verbose',false, ... 'Plots','training-progress'); net = trainNetwork(trainDigitData,lgraph,options); % 测试卷积神经网络 testLabels = classify(net,testDigitData); accuracy = sum(testLabels == testDigitData.Labels)/numel(testLabels); fprintf('准确率为%.2f%%。\n',accuracy*100); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值