importNetworkFromPyTorch
语法
描述
进口PyTorch pretrained和跟踪®模型从文件净
= importNetworkFromPyTorch (modelfile
)modelfile
。函数的作用是:返回网络净
作为一个未初始化的dlnetwork
对象。
importNetworkFromPyTorch
要求深度学习工具箱™转换器PyTorch模型金宝app支持包。如果这种支持包没金宝app有安装importNetworkFromPyTorch
提供一个下载链接。
请注意
的importNetworkFromPyTorch
函数可能会生成一个自定义层当PyTorch转换层。有关更多信息,请参见算法。保存生成的功能定义层包+
modelfile
。
从PyTorch进口pretrained网络并保存生成的自定义在包层和相关功能净
= importNetworkFromPyTorch (modelfile
PackageName =CustomLayersPackage
)+
CustomLayersPackage
。
例子
从PyTorch并添加进口网络输入层
导入一个pretrained和追踪PyTorch模型作为一个未初始化的dlnetwork
对象。然后,添加一个输入层到进口网络。
本例中导入MNASNet(版权©Soumith Chintala 2016) PyTorch模型。MNASNet是一个图像分类模型与图像训练ImageNet数据库。下载mnasnet1_0.pt
文件,大约17 MB的大小,从MathWorks网站。
modelfile = matlab.internal.examples.download金宝appSupportFile (“nnet”,…“数据/ PyTorchModels / mnasnet1_0.pt”);
通过使用导入MNASNet模型importNetworkFromPyTorch
函数。作为一个未初始化的函数导入模型dlnetwork
对象没有一个输入层。软件上显示一个警告,提供你信息输入层的数量,类型的输入层添加什么,如何添加一个输入层。
净= importNetworkFromPyTorch (modelfile)
警告:网络作为一个未初始化的dlnetwork进口。使用网络之前,添加输入层(s): inputLayer1 = imageInputLayer (< inputSize1 >、规范化= "没有");网= addInputLayer(净、inputLayer1初始化= true);
网= dlnetwork属性:层:[152×1 nnet.cnn.layer.Layer]连接:[163×2表]可学的:(210×3表)状态:[104×3表]InputNames: {“TopLevelModule_layers_0”} OutputNames: {“aten__linear12”}初始化:0观点总结总结。
指定的输入规模进口网络和创建一个图像输入层。然后,添加图像输入层网络和初始化网络通过使用进口addInputLayer
函数。
InputSize = (224 224 3);inputLayer = imageInputLayer (InputSize正常化=“没有”);网= addInputLayer(净、inputLayer初始化= true);
分析了进口网络输入层和视图。预测的网络已经可以使用了。
analyzeNetwork(净)
从PyTorch并初始化导入网络
导入一个pretrained和追踪PyTorch模型作为一个未初始化的dlnetwork
对象。然后,初始化导入网络。
本例中导入MNASNet(版权©Soumith Chintal 2016) PyTorch模型。MNASNet是一个图像分类模型与图像训练ImageNet数据库。Dowload的mnasnet1_0.pt
文件,大约17 MB的大小,从MathWorks网站。
modelfile = matlab.internal.examples.download金宝appSupportFile (“nnet”,…“数据/ PyTorchModels / mnasnet1_0.pt”);
通过使用导入MNASNet模型importNetworkFromPyTorch
函数。作为一个未初始化的函数导入模型dlnetwork
对象。
净= importNetworkFromPyTorch (modelfile)
警告:网络作为一个未初始化的dlnetwork进口。使用网络之前,添加输入层(s): inputLayer1 = imageInputLayer (< inputSize1 >、规范化= "没有");网= addInputLayer(净、inputLayer1初始化= true);
网= dlnetwork属性:层:[152×1 nnet.cnn.layer.Layer]连接:[163×2表]可学的:(210×3表)状态:[104×3表]InputNames: {“TopLevelModule_layers_0”} OutputNames: {“aten__linear12”}初始化:0观点总结总结。
指定的输入规模进口网络。然后,创建一个随机的dlarray
对象代表了网络的输入。的数据格式dlarray
对象必须有尺寸“SSCB”
(空间、空间、通道、批处理)来表示一个二维图像的输入。有关更多信息,请参见数据格式与dlnetwork预测。
InputSize = (224 224 3);X = dlarray(兰德(InputSize),“SSCB”);
初始化的可学的参数导入网络使用初始化
函数。
网=初始化(净,X);
现在进口网络可以用于预测。分析了进口网络。
analyzeNetwork(净)
从PyTorch进口网络和分类图像
导入一个pretrained和追踪PyTorch模型作为一个未初始化的dlnetwork
对象对一个图像进行分类。
本例中导入MNASNet(版权©Soumith Chintala 2016) PyTorch模型。MNASNet是一个图像分类模型与图像训练ImageNet数据库。下载mnasnet1_0.pt
文件,大约17 MB的大小,从MathWorks网站。
modelfile = matlab.internal.examples.download金宝appSupportFile (“nnet”,…“数据/ PyTorchModels / mnasnet1_0.pt”);
通过使用导入MNASNet模型importNetworkFromPyTorch
函数。作为一个未初始化的函数导入模型dlnetwork
对象。
净= importNetworkFromPyTorch (modelfile)
警告:网络作为一个未初始化的dlnetwork进口。使用网络之前,添加输入层(s): inputLayer1 = imageInputLayer (< inputSize1 >、规范化= "没有");网= addInputLayer(净、inputLayer1初始化= true);
网= dlnetwork属性:层:[152×1 nnet.cnn.layer.Layer]连接:[163×2表]可学的:(210×3表)状态:[104×3表]InputNames: {“TopLevelModule_layers_0”} OutputNames: {“aten__linear12”}初始化:0观点总结总结。
指定的输入规模进口网络和创建一个图像输入层。然后,添加图像输入层网络和初始化网络通过使用进口addInputLayer
函数。
InputSize = (224 224 3);inputLayer = imageInputLayer (InputSize正常化=“没有”);网= addInputLayer(净、inputLayer初始化= true);
读你想要的图像分类。
我= imread (“peppers.png”);
调整图像的输入规模网络。显示图像。
InputSize = (224 224 3);我= imresize (Im, InputSize (1:2));imshow (Im)
输入MNASNet需要进一步的预处理。重新调节图像。然后,标准化图像训练图像减去均值和标准差除以训练图像。有关更多信息,请参见输入数据预处理。
我=重新调节(Im 0 1);meanIm = (0.485 0.456 0.406);stdIm = (0.229 0.224 0.225);我= (Im -重塑(meanIm [1 1 3]))。/重塑(stdIm [1 1 3]);
将图像转换为一个dlarray
对象。格式的图像尺寸“SSCB”
(空间、空间、通道、批)。
Im_dlarray = dlarray(单(Im),“SSCB”);
得到的类名squeezenet
,这也是训练ImageNet图像。
squeezeNet = squeezeNet;一会= squeezeNet.Layers . class(结束);
图像进行分类,找到预测的标签。
概率=预测(净,Im_dlarray);[~,label_ind] = max(概率);
显示分类的结果。
类名(label_ind)
ans =分类甜椒
从PyTorch进口网络并找到生成自定义层
导入一个pretrained和追踪PyTorch模型作为一个未初始化的dlnetwork
对象。然后,找到该软件生成的自定义层。
下面的例子使用了findCustomLayers
helper函数。
本例中导入MNASNet(版权©Soumith Chintala 2016) PyTorch模型。MNASNet是一个图像分类模型与图像训练ImageNet数据库。下载mnasnet1_0.pt
文件,大约17 MB的大小,从MathWorks网站。
modelfile = matlab.internal.examples.download金宝appSupportFile (“nnet”,…“数据/ PyTorchModels / mnasnet1_0.pt”);
通过使用导入MNASNet模型importNetworkFromPyTorch
函数。作为一个未初始化的函数导入模型dlnetwork
对象。
网= importNetworkFromPyTorch (modelfile);
警告:网络作为一个未初始化的dlnetwork进口。使用网络之前,添加输入层(s): inputLayer1 = imageInputLayer (< inputSize1 >、规范化= "没有");网= addInputLayer(净、inputLayer1初始化= true);
的importNetworkFromPyTorch
函数生成自定义层的PyTorch层函数不能转换为内置的MATLAB层或函数。有关更多信息,请参见算法。保存的软件自动生成自定义层的包+ mnasnet1_0
在当前文件夹和分包的相关功能+行动
。看到自定义层和相关函数,检查包裹。
你还可以找到生成自定义的指标层使用findCustomLayers
helper函数。显示自定义层。
印第安纳州= findCustomLayers (net.Layers,' + mnasnet1_0 ');net.Layers(印第安纳州)
ans = 13×1层与层:数组1 aten__add0 mnasnet1_0定制层。mnasnet1_0 aten__add0 2“aten__add1”自定义层。mnasnet1_0 aten__add1 3 ' aten__add2 '自定义层。mnasnet1_0 aten__add2 4“aten__add3”自定义层。mnasnet1_0 aten__add3 5“aten__add4”自定义层。mnasnet1_0 aten__add4 6“aten__add5”自定义层。mnasnet1_0 aten__add5 7“aten__add6”自定义层。mnasnet1_0 aten__add6 8“aten__add7”自定义层。mnasnet1_0 aten__add7 9“aten__add8”自定义层。mnasnet1_0 aten__add8 10“aten__add9”自定义层。mnasnet1_0 aten__add9 11“aten__dropout_11”自定义层。mnasnet1_0 aten__dropout_11 12“aten__linear12”自定义层。aten__linear1213 'aten__mean10' Custom Layer mnasnet1_0.aten__mean10
Helper函数
本节提供了findCustomLayers
helper函数,它返回指数
自定义层importNetworkFromPyTorch
自动生成。
函数指数= findCustomLayers(层,PackageName) s = ([‘。’PackageName]);指数= 0(1、长度(小);为i = 1:长度(层)为j = 1:长度(小)如果strcmpi(类(层(i)), [PackageName(2:结束)“。”s.m {j} (1: end-2)])指数(j) =我;结束结束结束结束
火车从PyTorch进口网络对新图像进行分类
这个例子展示了如何从PyTorch进口网络和训练网络分类的新图像。使用importNetworkFromPytorch
作为一个未初始化的函数导入网络dlnetwork
对象。列车网络通过使用自定义训练循环。
下面的例子使用了modelLoss
,modelPredictions
,preprocessMiniBatchPredictors
辅助功能。
这个示例提供了支持文件金宝appnew_fcLayer.m
。访问支持文件,打开生活中的例金宝app子编辑器。
加载数据
解压MerchData数据集,其中包含75张图片。加载新的图像,图像数据存储。的imageDatastore
函数自动标签图像基于文件夹的名字和存储数据作为ImageDatastore
对象。将数据分为训练和验证数据集。使用70%的图片,培训为30%,验证。
解压缩(“MerchData.zip”);imd = imageDatastore (“MerchData”,…IncludeSubfolders = true,…LabelSource =“foldernames”);[imdsTrain, imdsValidation] = splitEachLabel (imd, 0.7);
在本例中使用的网络需要输入的图像大小224 - 224 - 3。自动调整训练图像,使用一个增强图像数据存储。指定额外增加操作执行培训图片:随机翻译30像素的图像在水平和垂直轴。数据增加有助于防止网络过度拟合和记忆的训练图像的细节。
inputSize = (224 224 3);pixelRange = 30 [-30];scaleRange = (0.9 - 1.1);imageAugmenter = imageDataAugmenter (…RandXReflection = true,…RandXTranslation = pixelRange,…RandYTranslation = pixelRange,…RandXScale = scaleRange,…RandYScale = scaleRange);augimdsTrain = augmentedImageDatastore (inputSize (1:2), imdsTrain,…DataAugmentation = imageAugmenter);
自动调整验证图像不执行进一步的数据,使用一个增强的图像数据存储不指定任何额外的预处理操作。
augimdsValidation = augmentedImageDatastore (inputSize (1:2), imdsValidation);
确定训练数据的类的数量。
类=类别(imdsTrain.Labels);numClasses =元素个数(类);
进口网络
下载MNASNet(版权©Soumith Chintala 2016) PyTorch模型。MNASNet是一个图像分类模型与图像训练ImageNet数据库。下载mnasnet1_0.pt
文件,大约17 MB的大小,从MathWorks网站。
modelfile = matlab.internal.examples.download金宝appSupportFile (“nnet”,…“数据/ PyTorchModels / mnasnet1_0.pt”);
导入MNASNet模型作为一个未初始化的dlnetwork
对象,通过使用importNetworkFromPyTorch
函数。
净= importNetworkFromPyTorch (modelfile)
警告:网络作为一个未初始化的dlnetwork进口。使用网络之前,添加输入层(s): inputLayer1 = imageInputLayer (< inputSize1 >、规范化= "没有");网= addInputLayer(净、inputLayer1初始化= true);
网= dlnetwork属性:层:[152×1 nnet.cnn.layer.Layer]连接:[163×2表]可学的:(210×3表)状态:[104×3表]InputNames: {“TopLevelModule_layers_0”} OutputNames: {“aten__linear12”}初始化:0观点总结总结。
显示导入的网络的最后一层。
net.Layers(结束)
ans = aten__linear12属性:名称:“aten__linear12”NumInputs: 2 InputNames: {’’‘in_rank} TopLevelModule_classifier_1_weight可学的参数:[1280×1000单]TopLevelModule_classifier_1_bias: [0.0493 -0.0804 -0.0906 -0.1006 0.1332 -0.0767 -0.0788 -0.0026 -0.0525 -0.1215 -0.1635 -0.1147 -0.1421 -0.1148 -0.0586 -0.2150 -0.0970 -0.0798 -5.4136 e-04 -0.0968 0.0479 0.0780 0.0015 -0.1375 -0.0485 -0.1223…]状态参数没有属性。显示所有属性
的aten__linear12
层是一个自定义层生成的importNetworkFromPyTorch
函数最后可学的进口网络的层。这一层包含的信息如何结合网络特性,提取类概率和损失价值。
取代最后一层
再培训导入网络分类的新图像,用一个新的替换最后一层完全连接层。新层new_fclayer
适应新的数据集,还必须是一个自定义层,因为它有两个输入。
初始化new_fcLayer
层和替换aten__linear12
层与new_fcLayer
。
newLayer = new_fcLayer (“fc1”,“自定义层”,…{“在”“in_rank”},{“出”},numClasses);网= replaceLayer(网络,“aten__linear12”,newLayer);
softmax层添加到网络和连接将softmax层新完全连接层。
网= addLayers(净,softmaxLayer (Name =“sm1”));网= connectLayers(网络,“fc1”,“sm1”);
添加输入层
添加一个图像输入到网络层和初始化网络。
inputLayer = imageInputLayer (inputSize正常化=“没有”);网= addInputLayer(净、inputLayer初始化= true);
分析了网络。查看第一层和最后一层。
analyzeNetwork(净)
定义模型损失函数
训练一个深层神经网络是一种优化的任务。通过考虑一个神经网络作为一个函数 ,在那里 网络的输入, 可学的参数集,您可以优化吗 减少一些损失值基于训练数据。例如,优化可学的参数 这样,对于给定输入 与相应的目标 ,他们之间的误差最小化预测 和 。
创建modelLoss
函数,列出的损失函数模型部分的例子,作为输入dlnetwork
对象和一个mini-batch输入数据与相应的目标。函数返回的损失,损失的梯度对可学的参数,和网络状态。
指定培训选项
火车15世mini-batch大小为20。
numEpochs = 15;miniBatchSize = 20;
指定的选项个优化。指定一个初始学习衰变率0.001,0.005,和0.9的动力。
initialLearnRate = 0.001;衰变= 0.005;动量= 0.9;
火车模型
创建一个minibatchqueue
对象流程和管理mini-batches图像在训练。为每个mini-batch:
使用自定义mini-batch预处理功能
preprocessMiniBatch
(在这个例子中定义)转换编码的标签在一个炎热的变量。格式的图像数据维度标签
“SSCB”
(空间、空间、通道、批)。默认情况下,minibatchqueue
把数据转换为对象dlarray
潜在的对象类型单
。没有格式的类标签。火车在GPU如果一个是可用的。默认情况下,
minibatchqueue
将每个输出转换为对象gpuArray
对象如果GPU可用。使用GPU需要并行计算工具箱™和支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU计算的需求(并行计算工具箱)。
兆贝可= minibatchqueue (augimdsTrain,…MiniBatchSize = MiniBatchSize,…MiniBatchFcn = @preprocessMiniBatch,…MiniBatchFormat = [“SSCB””“]);
初始化与动量梯度下降的速度参数解算器(个)。
速度= [];
计算迭代的总数的培训进度监控。
numObservationsTrain =元素个数(imdsTrain.Files);numIterationsPerEpoch =装天花板(numObservationsTrain / miniBatchSize);numIterations = numEpochs * numIterationsPerEpoch;
初始化trainingProgressMonitor
对象。因为计时器开始创建监视器对象时,训练循环后立即创建对象。
监控= = trainingProgressMonitor(指标“损失”信息= (“时代”,“LearnRate”),包含=“迭代”);
列车网络使用自定义训练循环。对于每一个时代,洗牌和遍历mini-batches数据的数据。为每个mini-batch:
确定基于时间的学习速率衰减学习速率的时间表。
更新网络参数使用
sgdmupdate
函数。更新损失,学习速度,训练进度监控和时代价值。
停止,如果
停止
房地产是正确的。的停止
属性值的TrainingProgressMonitor
对象的变化真正的
当你点击停止按钮。
时代= 0;迭代= 0;%循环时期。而时代< numEpochs & & ~班长。停止时代=时代+ 1;%洗牌数据。洗牌(兆贝可);%在mini-batches循环。而hasdata(兆贝可)& & ~班长。停止iteration = iteration + 1;% mini-batch读取的数据。[X, T] =下一个(兆贝可);%评估模型梯度、州和使用dlfeval和损失% modelLoss功能和更新网络状态。(损失、渐变、状态)= dlfeval (@modelLoss,净,X, T);网。=状态;%确定为基于时间的学习速率衰减学习速率的时间表。learnRate = initialLearnRate /(1 +衰变*迭代);%更新使用个优化网络参数。(净、速度)= sgdmupdate(净、渐变速度,learnRate动量);%更新培训进度监控。recordMetrics(监控、迭代损失=损失);updateInfo(监控、时代=时代LearnRate = LearnRate);班长。进步= 100 *迭代/ numIterations;结束结束
验证图像进行分类
测试模型的分类精度比较预测验证集和真正的标签。
训练后,使预测新数据不需要标签。创建一个minibatchqueue
对象只包含测试数据的预测:
忽略标签测试,设置输出的数量mini-batch队列1。
指定相同的mini-batch大小用于培训。
预处理预测使用
preprocessMiniBatchPredictors
函数,列出的例子。对于单一的输出数据存储,指定mini-batch格式
“SSCB”
(空间、空间、通道、批)。
numOutputs = 1;mbqTest = minibatchqueue (augimdsValidation numOutputs,…MiniBatchSize = MiniBatchSize,…MiniBatchFcn = @preprocessMiniBatchPredictors,…MiniBatchFormat =“SSCB”);
循环mini-batches和使用的图像进行分类modelPredictions
函数,列出的例子。
欧美= modelPredictions(净、mbqTest、类);
评估分类精度。
tt = imdsValidation.Labels;精度=意味着(tt = =次)
精度= 0.9500
图表可视化预测在一个混乱。大值对应的类的对角线显示准确的预测。大值对应的类之间的非对角的表示强烈的困惑。
次图confusionchart (tt)
辅助函数
损失函数模型
的modelLoss
函数作为输入dlnetwork
对象净
和mini-batch输入数据X
与相应的目标T
。函数返回的损失,损失的梯度参数对可学的净
,和网络状态。自动计算梯度,使用dlgradient
函数。
函数(损失、渐变、状态)= modelLoss(净,X, T)%通过网络转发数据。[Y,状态]=前进(净,X);%计算熵的损失。损失= crossentropy (Y, T);%计算梯度的损失对可学的参数。梯度= dlgradient(损失、net.Learnables);结束
模型的预测函数
的modelPredictions
函数作为输入dlnetwork
对象净
,一个minibatchqueue
的输入数据兆贝可
和网络类。函数计算模型预测的循环遍历所有的数据minibatchqueue
对象。这个函数使用onehotdecode
函数找到预测类最高的分数。
函数Y = modelPredictions(净、兆贝可类)Y = [];%在mini-batches循环。而hasdata(兆贝可)X =(兆贝可);%进行预测。成绩=预测(净,X);%解码标签和附加到输出。标签= onehotdecode(成绩、类1)';Y = [Y;标签);结束结束
小批预处理功能
的preprocessMiniBatch
函数进行预处理的mini-batch预测和标签使用这些步骤:
使用预处理的图像
preprocessMiniBatchPredictors
函数。从传入单元阵列提取标签数据和连接到一个直言沿着二维数组。
一个炎热的分类标签编码成数字数组。编码的第一个维度产生一个相匹配的形状编码阵列网络输出。
函数[X, T] = preprocessMiniBatch (dataX人数()%预处理预测。X = preprocessMiniBatchPredictors (dataX);%从细胞中提取标签数据和连接。猫(T = 2,人数({1:结束});%一个炎热的编码标签。T = onehotencode (T, 1);结束
Mini-Batch预测预处理功能
的preprocessMiniBatchPredictors
函数进行预处理mini-batch预测因子的提取图像数据从输入单元阵列和连接到一个数字数组。灰度输入,连接在第四维度添加了一个三维图像使用作为一个单通道尺寸。
函数X = preprocessMiniBatchPredictors (dataX)%连接。猫(X = 4, dataX{1:结束});结束
输入参数
modelfile
- - - - - -PyTorch模型文件的名称
特征向量|字符串标量
包含网络PyTorch模型文件的名称,指定为一个特征向量或字符串标量。文件必须在当前文件夹或文件夹在MATLAB®路径,或您必须包括一个完整的文件的相对路径。PyTorch模型必须pretrained和跟踪在一个推理迭代。
如何跟踪PyTorch模型的信息,明白了https://pytorch.org/docs/stable/generated/torch.jit.trace.html。
例子:“mobilenet_v3.pt”
CustomLayersPackage
- - - - - -定义层包的名称
特征向量|字符串标量
的包的名称importNetworkFromPyTorch
保存自定义图层,指定为一个特征向量或字符串标量。importNetworkFromPyTorch
保存自定义层包+ CustomLayersPackage
在当前文件夹。如果你不指定CustomLayersPackage
,然后importNetworkFromPyTorch
保存自定义层包命名+
modelfile
在当前文件夹。关于包的更多信息,请参阅包创建名称空间。
看到算法当信息importNetworkFromPyTorch
函数生成一个自定义层。自定义生成的函数保存每个层到一个单独的程序文件+
。查看或编辑自定义图层,打开相关的程序文件。自定义层的更多信息,见自定义图层。CustomLayersPackage
这个包+
也可以包含分包CustomLayersPackage
+行动
。这个分包包含自动生成自定义层使用MATLAB函数。importNetworkFromPyTorch
节省每一个MATLAB函数在一个单独的程序文件分装+行动
。对象的功能dlnetwork
,如预测
函数,与自定义层交互时使用这些函数。分装的+行动
也可能包含占位符函数。
例子:“mobilenet_v3”
输出参数
净
——Pretrained PyTorch网络
dlnetwork
对象
Pretrained PyTorch网络,作为一个未初始化的返回dlnetwork
对象。使用进口网络之前,您必须添加一个输入层或初始化网络。有关示例,请参见从PyTorch并添加进口网络输入层和从PyTorch并初始化导入网络。
限制
的
importNetworkFromPyTorch
功能完全支持1.10.0 Py金宝appTorch版本。该函数可以导入其他PyTorch版本中创建的大多数模型。的
importNetworkFromPyTorch
函数只能导入图像分类和分割模型。您可以运行
importNetworkFromPyTorch
在Windows®或Mac OS平台。
更多关于
转换PyTorch层和功能内置MATLAB层和功能
的importNetworkFromPyTorch
函数支持PyTor金宝appch层、函数和运营商在这一节中列出的转换成内置MATLAB层和功能dlarray
金宝app支持。有关函数操作的更多信息dlarray
对象,看到与dlarray支持函数的列表金宝app。你可以观察的局限性转换。
此表显示了PyTorch层和深度学习工具箱层之间的通信。在某些情况下,当importNetworkFromPyTorch
不能PyTorch层转换成一个MATLAB层,软件PyTorch层转换成深度学习工具箱函数dlarray
金宝app支持。
PyTorch层 | 相应的深度学习工具箱层 | 替代深度学习工具箱函数 |
---|---|---|
torch.nn.AdaptiveAvgPool2d |
nnet.pytorch.layer.AdaptiveAveragePoolingLayer |
pyAdaptiveAvgPool2d |
torch.nn.AvgPool2d |
averagePooling2dLayer |
不适用 |
torch.nn.BatchNorm2d |
batchNormalizationLayer |
不适用 |
torch.nn.Conv1d |
convolution1dLayer |
pyConvolution |
torch.nn.Conv2d |
convolution2dLayer |
不适用 |
torch.nn.ConvTranspose1d |
transposedConv1dLayer |
pyConvolution |
torch.nn.Dropout |
dropoutLayer |
不适用 |
torch.nn.GroupNorm |
groupNormalizationLayer |
不适用 |
torch.nn.LayerNorm |
layerNormalizationLayer |
不适用 |
torch.nn.Linear |
fullyConnectedLayer |
pyLinear |
torch.nn.MaxPool2d |
maxPooling2dLayer |
不适用 |
torch.nn.PReLU |
nnet.pytorch.layer.PReLULayer |
不适用 |
torch.nn.ReLU |
reluLayer |
线性整流函数(Rectified Linear Unit) |
torch.nn.SiLU |
swishLayer |
pySilu |
torch.nn.Sigmoid |
sigmoidLayer |
pySigmoid |
torch.nn.Softmax |
nnet.pytorch.layer.SoftmaxLayer |
pySoftmax |
torch.nn.Upsample |
resize2dLayer (图像处理工具箱) |
pyUpsample (需要图像处理工具箱™) |
torch.nn.UpsamplingNearest2d |
resize2dLayer (图像处理工具箱) |
pyUpsample (需要图像处理工具箱) |
torch.nn.UpsamplingBilinear2d |
resize2dLayer (图像处理工具箱) |
pyUpsample (需要图像处理工具箱) |
此表显示了PyTorch函数和深度学习工具箱函数之间的通信。
PyTorch函数 | 相应的深度学习工具箱函数 |
---|---|
torch.nn.functional.avg_pool2d |
pyAvgPool2d |
torch.nn.functional.conv1d |
pyConvolution |
torch.nn.functional.conv2d |
pyConvolution |
torch.nn.functional.hardsigmoid |
pyAdaptiveAvgPool2d |
torch.nn.functional.dropout |
pyDropout |
torch.nn.functional.hardsigmoid |
pyHardSigmoid |
torch.nn.functional.hardswish |
pyHardSwish |
torch.nn.functional.linear |
pyLinear |
torch.nn.functional.log_softmax |
pyLogSoftmax |
torch.nn.functional.max_pool2d |
pyMaxPool2d |
torch.nn.functional.relu |
pyHardTanh |
torch.nn.functional.silu |
pySilu |
torch.nn.functional.softmax |
pySoftmax |
这个表显示PyTorch数学之间的通信运营商和深度学习工具箱函数。为猫
PyTorch运营商,importNetworkFromPyTorch
首先尝试将它转换成一个连接层和另外一个函数。
PyTorch运营商 | 相应的深度学习工具箱层或函数 | 替代深度学习工具箱函数 |
---|---|---|
+ ,- - - - - - ,* ,/ |
pyElementwiseBinary |
不适用 |
torch.argmax |
pyArgMax |
不适用 |
torch.bmm |
pyMatMul |
不适用 |
torch.cat |
concatenationLayer |
pyConcat |
torch.chunk |
pyChunk |
不适用 |
torch.concat |
pyConcat |
不适用 |
torch.matmul |
pyMatMul |
不适用 |
torch.max |
pyMaxBinary / pyMaxUnary |
不适用 |
torch.mean |
pyMean |
不适用 |
torch.permute |
pyPermute |
不适用 |
torch.pow |
pyElementwiseBinary |
不适用 |
torch.reshape |
pyView |
不适用 |
torch.size |
pySize |
不适用 |
torch.split |
pySplitWithSizes |
不适用 |
torch.stack |
pyStack |
不适用 |
torch.sum |
pySum |
不适用 |
torch.squeeze |
pySqueeze |
不适用 |
torch.transpose |
pyTranspose |
不适用 |
torch.unsqueeze |
pyUnsqueeze |
不适用 |
torch.zeros |
pyZeros |
不适用 |
这个表格展示了PyTorch矩阵之间的通信运营商和深度学习工具箱函数。
PyTorch运营商 | 相应的深度学习工具箱函数或运算符 |
---|---|
索引(例如,X (: 1) ) |
pySlice |
torch.tensor.contiguous |
= |
torch.tensor.expand |
pyExpand |
torch.tensor.expand_as |
pyExpandAs |
torch.tensor.select |
pySlice |
torch.tensor.view |
pyView |
占位符函数
当importNetworkFromPyTorch
函数不能PyTorch层转换成一个内置的MATLAB层或生成一个自定义层与MATLAB函数有关,一个占位符的函数创建一个自定义层的功能。之前你必须完成占位符函数可以使用网络。
这个代码片段显示了定义一个自定义层的占位符的功能pyAtenUn金宝appsupportedOperator
。
classdefUn金宝appsupportedOperator < nnet.layer.Layer函数[输出]=预测(obj __arg1)阿托恩%占位符函数::< unsupportedOperator >金宝app输出= pyAtenUnsupp金宝apportedOperator (__arg1、params);结束结束
提示
使用pretrained网络预测或转让学习新的图片,你必须进行预处理图像以同样的方式用于火车导入模型的图像预处理。最常见的预处理步骤调整图片大小,图像减去平均值,将图像从BGR格式转换为RGB格式。
更多信息预处理图像进行训练和预测,明白了预处理图像深度学习。
包的成员
+
无法访问如果包父文件夹不是MATLAB路径。有关更多信息,请参见包和MATLAB的道路。PackageName
MATLAB使用集中的索引,而Python®使用从零开始的索引。换句话说,在数组第一个元素的索引1和0在MATLAB和Python,分别。MATLAB索引的更多信息,请参阅数组索引。在MATLAB中,使用数组索引(
印第安纳州
)在Python中,创建数组转换为印第安纳州+ 1
。更多的技巧,明白了建议从TensorFlow进口模型,PyTorch ONNX。
算法
的importNetworkFromPyTorch
一层PyTorch导入MATLAB函数通过这些步骤为:
函数试图导入PyTorch层作为一个内置的MATLAB层。有关更多信息,请参见PyTorch转换层。
函数试图导入PyTorch层作为一个内置的MATLAB函数。有关更多信息,请参见PyTorch转换层。
函数试图导入PyTorch层作为一个自定义层。
importNetworkFromPyTorch
保存生成的自定义在包层和相关的功能+
modelfile
。例如,看到的从PyTorch进口网络并找到生成自定义层。函数导入PyTorch层作为一个自定义层与一个占位符的功能。有关更多信息,请参见占位符函数。
在前三个情况下,进口后准备预测网络初始化。
版本历史
介绍了R2022b
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。