首先感谢大家看到这个帖子。
假设我有一个输入数据框,行是数据数量,列是 5 个特征:ft1、ft2、.....、ft5。
然后我有一个简单的二元分类神经网络,其隐藏层有 2 个神经元。像这样的东西:
我可以控制输入每个神经元的输入吗?就像只有 ft1、3、5 到神经元 1,只有 ft2、4 到神经元 2?
再次感谢您。
我首先想到的是遮蔽,但似乎不太管用,也许我可以调整权重?有什么建议吗?
我可以控制输入每个神经元的输入吗?
是的。
您正在描述神经网络的架构, 它是如何接线的。
而不是“全连接”层, 你希望 Neuron1 只连接到奇数输入特征, 神经元 2 只与偶数相连。 你构建了神经网络,所以是的,你当然可以用这种方式构建它。
同样,您可以选择使用全连接层 对于神经元 1 的均匀输入,这会强制权重为
0
,
对于神经元 2 的奇数输入也类似。
由于两个神经元不共享权重, 这与暹罗建筑不同。
是的,您可以创建一个具有两个输入的连体神经网络,然后在输出之前将它们连接(相加或相乘):
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