Machine learning 如何创建具有多个输出层的神经网络(Julia,Flux)

Machine learning 如何创建具有多个输出层的神经网络(Julia,Flux),machine-learning,deep-learning,julia,flux-machine-learning,Machine Learning,Deep Learning,Julia,Flux Machine Learning,假设我有下面的神经网络 net = Chain(Dense(3,5,\sigma), Dense(5,2, ???)) 我想知道用什么来代替???因此,我的第一个输出神经元通过一个RELU激活函数,第二个通过一个S形函数。该网络的输出是一对要执行的操作,第一个是正实值,另一个是二进制选择 我不能定义一个定制的relu_sigma函数来做出选择,因为它的工作方式是激活函数采用单个值,而不是数组。所以我不能做一个知道它是以第一个还是第二个Wx+b作为参数的函数 更一般地说,我想知道如何使这种网络在

假设我有下面的神经网络

net = Chain(Dense(3,5,\sigma), Dense(5,2, ???))
我想知道用什么来代替???因此,我的第一个输出神经元通过一个RELU激活函数,第二个通过一个S形函数。该网络的输出是一对要执行的操作,第一个是正实值,另一个是二进制选择

我不能定义一个定制的relu_sigma函数来做出选择,因为它的工作方式是激活函数采用单个值,而不是数组。所以我不能做一个知道它是以第一个还是第二个Wx+b作为参数的函数


更一般地说,我想知道如何使这种网络在任意数量的神经元上具有任意数量的功能,例如5个relu、2个sigmoid和最后4个softmax。我定义了一种自定义层类型,如下所示。它不是一般的,它只对神经元的前半部分应用relu,对后半部分应用sigma。但这正是我的应用程序所需要的,泛化不应该太复杂而无法理解

struct reluSigma
    W
    b
end
reluSigma(in::Integer, out::Integer) =  reluSigma(param(randn(out, in)), param(randn(out)))

function (m::reluSigma)(x)
    l = Int(length(m.b)/2)
    r1 = 1:l
    r2 = l+1:length(m.b)
    vcat(relu(m.W[r1,:] * x .+ m.b[r1,:]), σ(m.W[r2,:] * x .+ m.b[r2,:]))
end