利用softmaxLayer实现神经网络输出层的多个softmax向量
16次观看(过去30天)
显示旧注释
我使用的是MATLAB 2021a中的深度学习工具箱。我要建立的神经网络在输出层有多个softmax向量。(例如10个长度为8的softmax向量)。也就是说,计算类似于内置的softmax()函数如何应用于矩阵的每一列。
如。
>> a = randn(2,2)
一个=
-1.1803 - 0.2963
1.6926 - -0.1352
> > softmax (a)
ans =
0.0535 - 0.6062
0.9465 - 0.3938
然而,我找不到一种方法来做这与softmaxLayer。
我的代码是这样的。
layersDNN = [
featureInputLayer (numInputs“名字”,“在”)
fullyConnectedLayer (numInputs * 2,“名字”,“fc1”)
batchNormalizationLayer (“名字”,“bn1”)
reluLayer (“名字”,“relu1”)
fullyConnectedLayer (numInputs * 8,“名字”,“取得”)
softmaxLayer (“名字”,“sm1”)
];
我试图让softmaxLayer在最后一层划分numinput *8节点到长度为8的numinput向量,并分别应用softmax函数。
或者,我试图删除softmaxLayer,并应用softmax来重塑网络的输出。大概是这样。
lgraphDNN = layerGraph(layersDNN);
dlnetDNN = dlnetwork(lgraphDNN);
out1 = forward(dlnetDNN, X);
out2 = shape(out1, [numInputs, 8]);
Pred = softmax(out2);
%计算损失,梯度等。
我不确定这是不是一个好的解决办法。我想知道是否有一种方法来做这使用softmaxLayer,因为要求不觉得像一个极端的情况。
接受的答案
布勒Kulkarni
2022年1月10日
编辑:布勒Kulkarni
2022年1月12日
你好,
从R2021b版本开始,您可以创建
numInputs
完全连接层的数量,每个输出大小为8。每个完全连接的层可以连接到它自己的softmax层。
来自softmax层的输出可以使用连接层进行连接,然后传递到输出层。