屏蔽每个神经元的输入,可能吗?

问题描述 投票:0回答:2

首先感谢大家看到这个帖子。

假设我有一个输入数据框,行是数据数量,列是 5 个特征:ft1、ft2、.....、ft5。

然后我有一个简单的二元分类神经网络,其隐藏层有 2 个神经元。像这样的东西:

我可以控制输入每个神经元的输入吗?就像只有 ft1、3、5 到神经元 1,只有 ft2、4 到神经元 2?

再次感谢您。

我首先想到的是遮蔽,但似乎不太管用,也许我可以调整权重?有什么建议吗?

python machine-learning deep-learning neural-network
2个回答
0
投票

我可以控制输入每个神经元的输入吗?

是的。

您正在描述神经网络的架构, 它是如何接线的。

而不是“全连接”层, 你希望 Neuron1 只连接到奇数输入特征, 神经元 2 只与偶数相连。 你构建了神经网络,所以是的,你当然可以用这种方式构建它。

同样,您可以选择使用全连接层 对于神经元 1 的均匀输入,这会强制权重为

0
, 对于神经元 2 的奇数输入也类似。

由于两个神经元不共享权重, 这与暹罗建筑不同。


0
投票

是的,您可以创建一个具有两个输入的连体神经网络,然后在输出之前将它们连接(相加或相乘):

left_input = Input((75,75,3))
right_input = Input((75,75,3))

convnet = Sequential([
    Conv2D(5,3, input_shape=(75,75,3)),
    Activation('relu'),
    MaxPooling2D(),
    Conv2D(5,3),
    Activation('relu'),
    MaxPooling2D(),
    Conv2D(7,2),
    Activation('relu'),
    MaxPooling2D(),
    Conv2D(7,2),
    Activation('relu'),
    Flatten(),
    Dense(18),
    Activation('sigmoid')
])

encoded_l = convnet(left_input)
encoded_r = convnet(right_input)

L1_layer = Lambda(lambda tensor:K.abs(tensor[0] - tensor[1]))

L1_distance = L1_layer([encoded_l, encoded_r])

prediction = Dense(1,activation='sigmoid')(L1_distance)
siamese_net = Model(inputs=[left_input,right_input],outputs=prediction)

完整笔记本:Kaggle

© www.soinside.com 2019 - 2024. All rights reserved.