利用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,因为要求不觉得像一个极端的情况。
2的评论
Isuru Rathnayaka
Isuru Rathnayaka 2021年12月12日
编辑:Isuru Rathnayaka 2021年12月12日
嗨,Abolfazl,我想知道这是否可以使用softmaxLayer。我的想法看起来有点像黑客,要求也没有奇怪到诉诸黑客。为了使我的问题更清楚,我把问题的结尾处改了措辞。
至于替代方案,它不会给出任何错误。然而,由于我的代码中的另一个问题,我无法验证它是否工作。我不是很熟悉Matlab和深度学习工具箱。

登录发表评论。

接受的答案

布勒Kulkarni
布勒Kulkarni 2022年1月10日
编辑:布勒Kulkarni 2022年1月12日
你好,
从R2021b版本开始,您可以创建 numInputs 完全连接层的数量,每个输出大小为8。每个完全连接的层可以连接到它自己的softmax层。
来自softmax层的输出可以使用连接层进行连接,然后传递到输出层。
有关更多信息,请参见的文档 连接层
1评论
Isuru Rathnayaka
Isuru Rathnayaka 2022年1月12日
嗨布勒,
非常感谢你详细的回答。我不知道拼接层的事。我试试这个方法。

登录发表评论。

更多答案(0)

标签

下载188bet金宝搏


释放

R2021a

社区寻宝

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

开始狩猎!

翻译的