MatConvNet 框架的mnist实例

2023-11-19

mnist  手写是被

cnn_mnist.m 主函数代码:

function [net, info] = cnn_mnist(varargin)  
% --------------------------------------------------------------   
%   主函数:cnn_mnist  
%   功能:  1.初始化CNN  
%           2.设置各项参数  
%           3.读取和保存数据集  
%           4.初始化train mnist的主函数 
%   参数:   varargin 可变参数
%   返回值: net  info
% ------------------------------------------------------------------------  
%运行vl_setupnn.m
run(fullfile(fileparts(mfilename('fullpath')),...
  '..', '..', 'matlab', 'vl_setupnn.m')) ;
% 参数配置
opts.batchNormalization = false ;                   %选择batchNormalization的真假  
opts.network = [] ;                                 %初始化一个网络  
opts.networkType = 'simplenn' ;                     %选择封装器:simplenn ,封装器有两种,分别为simplenn 和 dagnn  
[opts, varargin] = vl_argparse(opts, varargin) ;    %调用vl_argparse函数  参数值对的解析列表每初始化一次,就调用一次该函数
  
% 数据存放的路径
sfx = opts.networkType ;                                                %sfx=simplenn  
if opts.batchNormalization, sfx = [sfx '-bnorm'] ; end                  %这里条件为假  
opts.expDir = fullfile(vl_rootnn, 'data', ['mnist-baseline-' sfx]) ;    %选择数据存放的路径:vl_rootnn表示根目录,data\mnist-baseline-simplenn  
[opts, varargin] = vl_argparse(opts, varargin) ;                        %调用vl_argparse函数  
  
% 数据的读取路径
opts.dataDir = fullfile(vl_rootnn, 'data', 'mnist') ;                   %选择数据读取的路径:data\matconvnet-1.0-beta23\data\mnist  
opts.imdbPath = fullfile(opts.expDir, 'imdb.mat');                      %选择imdb结构体的路径:data\data\mnist-baseline-simplenn\imdb  
opts.train = struct() ;                                                 %选择训练集返回为struct型  
opts = vl_argparse(opts, varargin) ;                                    %调用vl_argparse函数  
  
%选择是否使用GPU,使用opts.train.gpus = 1,不使用:opts.train.gpus = []。   
%if ~isfield(opts.train, 'gpus'), opts.train.gpus = 1; end;    
if ~isfield(opts.train, 'gpus'), opts.train.gpus = []; end;


% ------------------------------------------------------------------------- 
%                                                              准备网络  
% -------------------------------------------------------------------------  
if isempty(opts.network)                                                    %如果原网络为空:  
  net = cnn_mnist_init('batchNormalization', opts.batchNormalization, ...   %则调用cnn_mnist_init网络结构  
    'networkType', opts.networkType) ;  
else                                                                        %否则:  
  net = opts.network ;                                                      %使用上面选择的数值带入现有网络  
  opts.network = [] ;  
end  
  
% -------------------------------------------------------------------------  
%                                                              准备数据  
% -------------------------------------------------------------------------  
if exist(opts.imdbPath, 'file')                         %如果mnist中存在imdb的结构体:  
  imdb = load(opts.imdbPath) ;                          %   载入imdb  
else                                                    %否则:  
  imdb = getMnistImdb(opts) ;                           %   调用getMnistImdb函数得到imdb并保存  
  mkdir(opts.expDir) ;                                    
  save(opts.imdbPath, '-struct', 'imdb') ;  
end  
  
%arrayfun函数通过应用sprintf函数得到array中从1到10的元素并且将其数字标签转化为char文字型  
net.meta.classes.name = arrayfun(@(x)sprintf('%d',x),1:10,'UniformOutput',false) ;  
  
% -------------------------------------------------------------------------  
%                                                              开始训练  
% -------------------------------------------------------------------------  
  
switch opts.networkType                                     %选择网络类型:  
  case 'simplenn', trainfn = @cnn_train ;                   %   1.simplenn  
  case 'dagnn', trainfn = @cnn_train_dag ;                  %   2.dagnn  
end  
  
[net, info] = trainfn(net, imdb, getBatch(opts), ...        %调用训练函数,开始训练:find(imdb.images.set == 3)为验证集的样本  
  'expDir', opts.expDir, ...                                % 参数的有关配置
  net.meta.trainOpts, ...  
  opts.train, ...  
  'val', find(imdb.images.set ==3)) ;  
  
  
% ------------------------------------------------------------------------  
function fn = getBatch(opts)  
% --------------------------------------------------------------  
%   函数名:getBatch  batch 批
%   功能:  1.由opts返回函数  
%           2.从imdb结构体取出数据   
% ------------------------------------------------------------------------  
switch lower(opts.networkType)                              %根据网络类型使用不同的getBatcch  
  case 'simplenn'  
    fn = @(x,y) getSimpleNNBatch(x,y) ;                     % 句柄函数(matlab基础知识)
  case 'dagnn'  
    bopts = struct('numGpus', numel(opts.train.gpus)) ;  
    fn = @(x,y) getDagNNBatch(bopts,x,y) ;  
end  
  
  
% --------------------------------------------------------------------  
function [images, labels] = getSimpleNNBatch(imdb, batch)  
% --------------------------------------------------------------  
%   函数名:getSimpleNNBatch  
%   功能:  1.由SimpleNN网络的批得到函数  
%           2.batch为样本的索引值  
% ------------------------------------------------------------------------  
images = imdb.images.data(:,:,:,batch) ;                %返回训练集  数据data,进行处理,最后会以矩阵的形式出现
labels = imdb.images.labels(1,batch) ;                  %返回集标签  
  
% --------------------------------------------------------------------  
function inputs = getDagNNBatch(opts, imdb, batch)  
% --------------------------------------------------------------  
%   函数名:getDagNNBatch  
%   功能:  类似上面的函数,这里的网络结构是DagNN  
% ------------------------------------------------------------------------  
images = imdb.images.data(:,:,:,batch) ;  
labels = imdb.images.labels(1,batch) ;  
if opts.numGpus > 0                                     %使用GPU进行并行运算  
  images = gpuArray(images) ;  
end  
inputs = {'input', images, 'label', labels} ;             
  
% --------------------------------------------------------------------  
function imdb = getMnistImdb(opts)            % 数据data进行处理
%--------------------------------------------------------------  
%   函数名:getMnistImdb  
%   功能:  1.从mnist数据集中获取data  
%           2.将得到的数据减去mean值,为了减少数据处理量 
%           3.将处理后的数据存放如imdb结构中  
% ------------------------------------------------------------------------  
% Preapre the imdb structure, returns image data with mean image subtracted  
files = {'train-images-idx3-ubyte', ...                     %载入mnist数据集  
         'train-labels-idx1-ubyte', ...  
         't10k-images-idx3-ubyte', ...  
         't10k-labels-idx1-ubyte'} ;  
  
if ~exist(opts.dataDir, 'dir')                              %如果不存在读取路径:  
  mkdir(opts.dataDir) ;                                     %   建立读取路径  
end  
  
for i=1:4                                                   %如果不存在mnist数据集则下载  
  if ~exist(fullfile(opts.dataDir, files{i}), 'file')  
    url = sprintf('http://yann.lecun.com/exdb/mnist/%s.gz',files{i}) ;  
    fprintf('downloading %s\n', url) ;  
    gunzip(url, opts.dataDir) ;  
  end  
end  
  
f=fopen(fullfile(opts.dataDir, 'train-images-idx3-ubyte'),'r') ;    %载入第一个文件,训练数据集大小为28*28,数量为6万  
x1=fread(f,inf,'uint8');                                              
fclose(f) ;   
x1=permute(reshape(x1(17:end),28,28,60e3),[2 1 3]) ;                %通过permute函数将数组的维度由原来的[1 2 3]变为[2 1 3] ...  
                                                                    %reshape将原数据从第17位开始构成28*28*60000的数组  
  
f=fopen(fullfile(opts.dataDir, 't10k-images-idx3-ubyte'),'r') ;     %载入第二个文件,测试数据集大小为28*28,数量为1万  
x2=fread(f,inf,'uint8');  
fclose(f) ;  
x2=permute(reshape(x2(17:end),28,28,10e3),[2 1 3]) ;                %同上解释  
  
f=fopen(fullfile(opts.dataDir, 'train-labels-idx1-ubyte'),'r') ;    %载入第三个文件:训练数据集的类标签  
y1=fread(f,inf,'uint8');  
fclose(f) ;  
y1=double(y1(9:end)')+1 ;                                                                                    
  
f=fopen(fullfile(opts.dataDir, 't10k-labels-idx1-ubyte'),'r') ;     %载入第四个文件:测试数据集的类标签  
y2=fread(f,inf,'uint8');  
fclose(f) ;  
y2=double(y2(9:end)')+1 ;  
  
%set = 1 对应训练;set = 3 对应的是测试  
set = [ones(1,numel(y1)) 3*ones(1,numel(y2))];              %numel返回元素的总数  
data = single(reshape(cat(3, x1, x2),28,28,1,[]));          %将x1的训练数据集和x2的测试数据集的第三个维度进行拼接组成新的数据集,并且转为single型减少内存  
dataMean = mean(data(:,:,:,set == 1), 4);                   %求出训练数据集中所有的图像的均值  
data = bsxfun(@minus, data, dataMean) ;                     %利用bsxfun函数将数据集中的每个元素逐个减去均值  
  
%将数据存入imdb结构中  
imdb.images.data = data ;                                   %data的大小为[28 28 1 70000]。 (60000+10000)  
imdb.images.data_mean = dataMean;                           %dataMean的大小为[28 28]  
imdb.images.labels = cat(2, y1, y2) ;                       %拼接训练数据集和测试数据集的标签,拼接后的大小为[1 70000]  
imdb.images.set = set ;                                     %set的大小为[1 70000],unique(set) = [1 3]  
imdb.meta.sets = {'train', 'val', 'test'} ;                 %imdb.meta.sets=1用于训练,imdb.meta.sets=2用于验证,imdb.meta.sets=3用于测试  
  
%arrayfun函数通过应用sprintf函数得到array中从0到9的元素并且将其数字标签转化为char文字型  
imdb.meta.classes = arrayfun(@(x)sprintf('%d',x),0:9,'uniformoutput',false) ; 


cnn_test_mnist.m 测试集代码

function [ net,info ] = cnn_mnist_test( varargin )
%CNN_MNIST_TEST 此处显示有关此函数的摘要
%    函数名:cnn_init_test
%    功能:  进行数据测试
%    返回值:  net info
%    参数:  varagrgin


% 加载vl_setupnn
run   matlab\vl_setupnn


% 导入数据model
load('E:\matconvnet-1.0-beta24\matconvnet-1.0-beta24\data\mnist-baseline-simplenn\net-epoch-20.mat');%此模型包含三个部分,其中一部分为net
% 导入数据集
load('E:\matconvnet-1.0-beta24\matconvnet-1.0-beta24\data\mnist-baseline-simplenn\imdb.mat');%images结构体在此读取


net = vl_simplenn_tidy(net);


net.layers{1,end}.type = 'softmax';%训练时为softmaxloss,测试时为softmax


% 挑选出测试集
test_index = find(images.set==3);%1对应训练集,3对应测试集,1有(1——60000)3有(60001——70000)


% 挑选出测试集以及真实类别
test_data = images.data(:,:,:,test_index);
test_label = images.labels(test_index);


% for i = 1:length(test_label)
% %     im_ = test_data(:,:,:,6010);%随意选取一张图像
%         im_ = test_data(:,:,:,i);  %随意选取一张图像
% end




im_ = test_data(:,:,:,666);%随意选取一张图像
% im=imread('5.jpg');


% 将im_中转换为单精度类型
im_=single(im_);
% 归一化大小 将图片缩放到28 * 28 的大小
im_ = imresize(im_,net.meta.inputSize(1:2));%此处和ImageNet网络名称不同
im_ = im_ - images.data_mean; %去均值




% res包含了计算结果,以及中间层的输出,最后一层可以用来分类,归一化处理  sofamaxloss层
res=vl_simplenn(net,im_);
y=res(end).x;
x=gather(res(end).x);
% 删除单独维度
scores=squeeze(gather(res(end).x));
[bestScore,best]=max(scores);
figure(1);
clf;
imshow(im_);
title(sprintf('%s %d,%.3f',...
        net.meta.classes.name{best-1},best-1,bestScore));
end




% 一个对序列号为60000-70000图像进行整体精度预测的代码,
% function [ net,info ] = cnn_mnist_test( varargin )
% run ../matlab/vl_setupnn
% 导入数据model
%load('E:\matconvnet-1.0-beta24\matconvnet-1.0-beta24\data\mnist-baseline-simplenn\net-epoch-20.mat');%此模型包含三个部分,其中一部分为net
% 导入数据集
% load('E:\matconvnet-1.0-beta24\matconvnet-1.0-beta24\data\mnist-baseline-simplenn\imdb.mat');%images结构体在此读取

% net = vl_simplenn_tidy(net);
% net.layers{1,end}.type = 'softmax';%训练时为softmaxloss,测试时为softmax
% % 挑选出测试样本在全体数据中对应的编号60001-70000
% test_index = find(images.set==3);%1对应训练集,3对应测试集,1有(1——60000)3有(60001——70000)
% % 挑选出测试集以及真实类别
% test_data = images.data(:,:,:,test_index);
% test_label = images.labels(test_index);

% % 将最后一层改为 softmax (原始为softmaxloss,这是训练用)
% net.layers{1, end}.type = 'softmax';

% % 对每张测试图片进行分类
% for i = 1:length(test_label)
%     i
%     im_ = test_data(:,:,:,i);
%     im_ = im_ - images.data_mean;
%     res = vl_simplenn(net, im_) ;
%     scores = squeeze(gather(res(end).x)) ;
%     [bestScore, best] = max(scores) ;
%     pre(i) = best;
% end

% % 计算准确率
% accurcy = length(find(pre==test_label))/length(test_label);
% disp(['accurcy = ',num2str(accurcy*100),'%']);
%end

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MatConvNet 框架的mnist实例 的相关文章

  • AttributeError: ‘_SingleProcessDataLoaderIter‘ object has no attribute ‘next‘

    由于pytorch版本不同 函数用法不同 改为 即可解决
  • 深度学习经典网络解析图像分类篇(一):LeNet-5

    深度学习经典网络解析图像分类篇 一 LeNet 5 1 背景介绍 2 LeNet 5网络架构 2 1输入层 2 2第一层 卷积层C1 2 3第二层 池化层S2 下采样 2 3第三层 卷积层C3 第四层 池化层S4 第五层 卷积层C5 第六层
  • TensorFlow在MNIST中的应用 识别手写数字(OpenCV+TensorFlow+CNN)

    参考 1 TensorFlow技术解析与实战 2 http blog csdn net sparta 117 article details 66965760 3 http blog csdn net HelloZEX article de
  • CNN,Transformer,MLP三分天下

    title 论文列表 1 MLP Mixer MLP Mixer An all MLP Architecture for Vision 2 MetaFormer MetaFormer is Actually What You Need fo
  • 基于改进YoloV3卷积神经网络的番茄病虫害检测

    ABSTRACT 番茄在生长过程中受到各种病虫害的影响 如果控制不及时 就会导致减产甚至歉收 如何有效地控制病虫害 帮助菜农提高番茄的产量是非常重要的 而准确地识别病虫害是最重要的 与传统的模式识别方法相比 基于深度学习的病虫害识别方法可以
  • 银行利率bp是什么意思,基准利率bp是什么意思

    银行bp是什么意思 在银行业里bp是指基点 是衡量利率的度量单位 1个基点等于0 01 100基点就是1 比如存款利率从5 下降到4 就是下调了100个bp 在银行业里 通常用bp来表示某个金融工具的利率变动幅度 或者两种利率之间的差价 此
  • pytorch入门day5-卷积神经网络实战

    目录 LeNet网络实战 ResNet 训练函数 LeNet网络实战 import torch from torch utils data import DataLoader from torchvision import datasets
  • 【深度学习】从LeNet-5识别手写数字入门深度学习

    活动地址 CSDN21天学习挑战赛 目录 LeNet模型 搭建环境 安装需要的包 创建工程 数据集 相关代码 可以设置GPU训练 默认CPU 通过TensorFlow下载数据集 对数据进行归一化处理 最值归一化 normalization
  • 神经网络控制系统的特点,神经网络控制的优点

    什么是神经网络控制 神经网络控制技术是一项复杂的系统控制技术 一般应用在变频器的控制中 它是通过对系统的辨识 运算后对变频器进行控制的一种新技术 而且神经网络控制可以同时控制多个变频器 所以应用在多个变频器级联控制中比较合适 谷歌人工智能写
  • 理解一维卷积

    根据我个人的经验和偏好 理解数学概念的最好方式之一就是赋予其物理意义 把f t 看做输入 g t 看做系统的衰减系数 卷积就比较好理解了 在某一时刻n 该系统对f n 的响应值就是f n xg 0 但系统的总输出C n 不仅跟当前输入的f
  • MATLAB实现CNN-LSTM卷积长短期记忆神经网络数据分类预测

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 一种基于长短时记忆网络和卷积神经网络的文本分类方法 首先 利用词向量将输入文本进行向
  • TensorFlow CNN 测试CIFAR-10数据集

    1 CIFAR 10 数据集 CIFAR 10数据集是机器学习中的一个通用的用于图像识别的基础数据集 官网链接为 The CIFAR 10 dataset官方教程Convolutional Neural Networks 下载使用的版本是
  • 基于CNN-GRU的多维数据预测算法——附带Matlab代码

    基于CNN GRU的多维数据预测算法 附带Matlab代码 近年来 卷积神经网络 CNN 和门控循环单元 GRU 在时序数据处理中的应用十分广泛 本文提出了一种基于CNN GRU结构的多维数据预测算法 并提供了相应的Matlab代码 首先
  • 利用CNN进行面部表情识别

    本文是论文 Facial Emotion Recognition State of the Art Performance on FER2013 的复现 感谢原作者Yousif Khaireddin和Zhuofa Chen 本文采用的数据集
  • 卷积神经网络中用1*1 卷积有什么作用或者好处呢?

    一 来源 1312 4400 Network In Network 如果1 1卷积核接在普通的卷积层后面 配合激活函数 即可实现network in network的结构 二 应用 GoogleNet中的Inception ResNet中的
  • 时序预测 | MATLAB实现WOA-CNN-GRU-Attention时间序列预测(SE注意力机制)

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 代码获取 论文复现及科研仿真合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab完整代码及仿真定制内容点击 智能优化算法 神经网络预测 雷达通信
  • CNN和TCN的区别和联系

    CNN 卷积神经网络 和TCN 时间卷积网络 都是神经网络的变体 用于处理不同类型的数据 以下是它们的主要区别和联系 区别 应用领域 CNN 主要用于处理图像数据 具有在空间维度上捕捉局部特征的能力 常用于计算机视觉任务 TCN 主要用于处
  • CNN和TCN的区别和联系

    CNN 卷积神经网络 和TCN 时间卷积网络 都是神经网络的变体 用于处理不同类型的数据 以下是它们的主要区别和联系 区别 应用领域 CNN 主要用于处理图像数据 具有在空间维度上捕捉局部特征的能力 常用于计算机视觉任务 TCN 主要用于处
  • 【深度学习】注意力机制(七)Agent Attention

    本文介绍Agent Attention注意力机制 Transformer中的Attention模块可以提取全局语义信息 但是计算量太大 Agent Attention是一种计算非常有效的Attention模块 论文 Agent Attent
  • 毕业设计:基于卷积神经网络的图像分类系统 python人工智能

    目录 前言 设计思路 一 课题背景与意义 二 算法理论原理 2 1 卷积神经网络 2 2 SVM算法 三 检测的实现 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力

随机推荐

  • 即时通信工具简介

    即时通信工具 什么是即时通信 即时通信是基于网络的一种新兴应用 它最基本的特征就是信息的即时传递和用户的交互性 并可将音 视频通信 文件传输及网络聊天等业务集成为一体 为人们开辟了一种新型的沟通途径 简单地讲 即时通信是一种使人们能在网络上
  • UP9616Q自带识别功能降压QC3.0车载快充芯片方案

    UP9616Q是一个高效率降压转换器能够提供高达3 3A充电器输出电流接口和一个宽范围输入电压 输入电压可从8V至32V 可工作在CV 恒定输出电压 模式 或 CC 恒定输出电流 模式 并带有电流限制功能 UP9616具有恒定的输出QC高通
  • Hyperledger Fabric配置文件解析-configtx.yaml

    configtx yaml简介 transaction的英文缩写是TX 表示交易 configtx表示交易配置 所以和交易相关的配置 如应用通道 锚节点 Orderer服务等 都是在configtx yaml文件中配置的 它主要生成通道创世
  • 自学黑客【网络安全】,一般人我劝你还是算了吧

    一 前言 1 这是一条坚持的道路 三分钟的热情可以放弃往下看了 2 多练多想 不要离开了教程什么都不会了 最好看完教程自己独立完成技术方面的开发 3 有时多 google baidu 我们往往都遇不到好心的大神 谁会无聊天天给你做解答 4
  • U盘制作成启动盘后容量变小怎么恢复

    今天用雨林木风做U盘启动后发现原本29G的可用空间只有25G可用了 怎么格式化都没办法还原 最后百度过后才知道出现这一问题的主要原因是在制作启动u盘时 软件会占用u盘部分空间进行制作并将这些空间隐藏起来 所以导致u盘的容量变小 恢复的方式也
  • maven笔记:maven创建archetype时的package路径错乱问题

    在使用mvn archetype create from project创建代码工程模板时 代码模板的import位置会出现 package 有时候可能会出现 紊乱 情况 比如org apache log4j 会被替换成net pgia i
  • centos7安装redis

    文章目录 1 检查是否安装Redis依赖 2 解压并编译安装 3 设置开机启动 3 1配置文件中允许后台运行 3 2redis服务文件中修改 1 检查是否安装Redis依赖 Redis是基于C语言编写的 需要gcc依赖 检查gcc是否安装
  • 使用Fragment作为Item的ViewPager不更新问题.

    最近做一个项目 需要在内存里动态切换ViewPager里面的Fragment 但是无论是我创建ViewPager还是刷新Adapter 只要被展示过的Fragment就不刷新 蛋疼了一下午 终于研究出来鸟 我首先使用的是fragmentPa
  • C语言实现的贪吃蛇(无EasyX,详解)

    前言 或许厌倦了枯燥的做题 那就学学贪吃蛇 激发你的学习乐趣吧 你将进一步加深对结构体 单链表 函数 循环等基础的理解 希望对你有所帮助 纯C实现的贪吃蛇 前言 代码效果 视频 学习新函数 让你的代码变得 高大上 任意位置输出 重点注意事项
  • SaveRenderTextureToPNG保存贴图到本地

    将RenderTexture保存成一张png图片 public bool SaveRenderTextureToPNG RenderTexture rt string contents string pngName RenderTextur
  • Nginx-内存池

    系列文章目录 Nginx资源目录简介 第一章 Nginx学习入门之内存池分析 文章目录 系列文章目录 Ngxin内存池简介 一 nginx内存池结构体 二 使用步骤 1 Ngix 内存池原理 内存作用范围 总结 Ngxin内存池简介 Ngi
  • maven 教程

    Maven项目管理 Maven是什么 Maven是Apache下的项目管理工具 它由纯Java语言开发 可以帮助我们更方便的管理和构建Java项目 为什么要使用Maven jar包管理 从Maven中央仓库获取标准的规范的jar包以及相关依
  • 故障:fork failed:Resource Temporarily Unavailable解决方案

    故障 fork failed Resource Temporarily Unavailable解决方案 在一次crontab bkapp txt导入N多定时任务时候 该用户无法执行任何命令 再ssh连报fork failed Resourc
  • oVirt快速安装指南

    介绍 此文档是针对第一次安装使用oVirt的用户 带领你们逐步完成oVirt的安装 基本环境设置和安装虚拟机 css 系统需求 下面介绍的系统要求只适合典型的中小规模环境的安装 若是对于安装 系统规划和负载均衡有特殊要求的用户 也可使用下面
  • 如何看待中小企业实现数字化转型难的问题?_光点科技

    中小企业在今天的商业环境中扮演着至关重要的角色 它们为就业创造了大量机会 促进了创新 支持了经济增长 然而 中小企业在数字化转型方面面临着许多挑战 这些挑战使得实现数字化转型变得困难 资源限制 中小企业通常拥有有限的资金和人力资源 这使得数
  • Onvif协议学习:12、修改分辨率

    Onvif协议学习 12 修改分辨率 文章目录 Onvif协议学习 12 修改分辨率 1 原理简介 2 函数接口 3 编码流程 4 示例代码 原文链接 https blog csdn net benkaoya article details
  • fc2 php,fc2fans_club.py

    import re from lxml import etree need install import json import ADC function def getTitle htmlcode 获取厂商 print htmlcode
  • 简单看看TypeScript、C# 和 Delphi 这三种编程语言

    TypeScript C 和 Delphi 是三种不同的编程语言 它们都有自己的特点和适用领域 在本篇博客中 我们将对这三种语言进行比较和介绍 分析它们的共同点和区别 TypeScript 是由微软公司的 Anders Hejlsberg
  • xctf-supersqli

    xctf supersqli 堆叠注入 一 堆叠注入 本次采用的靶场xctf的supersqli 一 堆叠注入 进入靶场 发现一个提示框 先随便点一下提交 发现输出了些东西 输入1 判断存在注入点 分别输如1 1 1 2 判断为单引号注入
  • MatConvNet 框架的mnist实例

    mnist 手写是被 cnn mnist m 主函数代码 function net info cnn mnist varargin 主函数 cnn mnist 功能 1 初始化CNN 2 设置各项参数 3 读取和保存数据集 4 初始化tra