使用breeze计算softmax



我正在从头开始构建一个深度神经网络,我想实现softmaxhttp://neuralnetworksanddeeplearning.com/chap3.html#softmax分布式函数。
我正在使用微风,但它不像预期的那样工作。
文档也很差,只有很少的例子,所以对我来说很难理解我应该如何使用它。

下面是一个例子:我有一个包含10维的输出数组。
我也有我的标签数组

Z包含10行加权值。
我的标签数组也包含10行,其中一行设置为1,以指定哪一行是预期的结果。

lab(0) = 1
lab(1 to 9) = 0

my code:

def ComputeZ(ActivationFunction : String, z:Array[Double], label:Array[Double]) : Array[Double] = {
ActivationFunction match {
case "SoftMax" => **val t = softmax(z,label)**
t
}
}

我期望有一个分布的概率,总共为10行1,但它返回的值实际上与z相同。
我不知道我做错了什么谢谢你的帮助

你的问题似乎让我有点困惑。我的意思是,从头开始创建SoftMax与标签或实际输出值无关。Softmax函数用于创建神经网络的有效输出概率分布,用于多类分类问题。正如我看到的,你有一个热向量作为标签,似乎你想实现一个CrossEntropy标准或一些误差函数来评估预测分布和标签分布的散度。这需要输出预测概率分布(将Softmax应用到输出层)和输出的一个热向量。

我在微风中观看了softmax函数的代码,但我没有看到一个层实现,它没有做我所期望的。请记住,您需要一个向前和向后的函数。

最新更新