我怎么能改变将softmax层使用trainNetwork分类问题与一个定制的人吗?

17日视图(30天)
我用卷积神经网络在MATLAB R2018b深度学习分类,我想使用一个自定义softmax层而不是默认的一个。
我试图构建一个定制的softmax层使用 过渡层模板 出现在 定义定制的深度学习层 ,但是当我训练网络 trainNetwork 我得到以下错误:
错误使用trainNetwork (xxx)行
无效的网络。
引起的由:
“WeightedClass”:缺少softmax层。一个分类层必须之前softmax层。
代码
这是代码定义了自定义softmax层:
classdefmySoftmaxLayer < nnet.layer.Layer
%定义softmax层。
属性(可学的)
%层可学的参数。
结束
方法
函数层= mySoftmaxLayer(名称)
%层= mySoftmaxLayer(名字)创建一个层
%和指定层的名字。
%设置图层名称。
层。Name =名称;
%设置层描述。
层。描述=“我softmax层”;
结束
函数Z =预测(层,X)
% Z =预测(层,X)将输入数据转发X通过
% Z层和输出结果。
Z = myFunctionSoftmax (X);
结束
函数dLdX =向后(层,X, Z, dLdZ,内存)
% dLdX =向后(层,X, Z, dLdZ,内存)
%向后传播损失函数的导数
%通过层。
%
%的输入:
%层-层反向传播
% X -输入数据
% Z -输出层的功能
% dLdZ——从更深的层梯度传播
%的记忆——记忆价值,可以用于向后
%传播
%输出:
% dLdX -导数的损失的
%的输入数据
dLdX = myDerivativeSoftmax (X) * dLdZ;
结束
结束
结束
这是代码定义的网络和训练:
% %定义CNN架构和培训选项
层= [
imageInputLayer(高宽渠道,“名字”,“输入”);
numFilters convolution2DLayer([高度winSize],“名字”,“Conv”);
batchNormalizationLayer (“名字”,“批”);
reluLayer (“名字”,“Relu”)
fullyConnectedLayer (numClasses“名字”,“FullyConn”);
mySoftmaxLayer (“MySoftmax”)
classificationLayer];
选择= trainingOptions (
“个”,
“MaxEpochs”,100,
“MiniBatchSize”,256,
“InitialLearnRate”,0.001);
% %训练CNN
网= trainNetwork (XTrain、YTrain层,选择);

接受的答案

Pruthvi Muppavarapu
Pruthvi Muppavarapu 2019年5月15日
你好大卫,
为了使用softmax层分类层之前,您可以定义ClassificationLayer定制回归输出层。随时参考以下文档创建一个定制的回归输出层:
进一步澄清,你需要自定义softmax层,定义
和分类层定义为一个自定义回归输出层的行为一样的但不需要softmaxLayer分类输出层。
希望这个有帮助。
问候,
Pruthvi

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的