您好,我是机器学习的新手,我想使用 Python 在 Keras 中构建我的第一个自定义层。我想用一个 103 维的数据集来做分类任务。模型的最后一个全连接层有 103 个神经元(由图像中的 13 个点表示)。前一层的五个维度的组应该连接到输出层的三个神经元,所以会有20个分类。输出层的神经元代表“真”(图像中的“T”)、“无关”(“?”)和“假”(“F”)。其余三个不需要连接到输出层。
我怎样才能建立这个层?我怎样才能确保 20 个具有三个神经元的组中的每一组给出的概率加起来为 1?例如,我可以将 softmax 激活函数应用于每个组吗?
编辑——这是我的解决方案:
# define input and hidden layers. append them to list by calling the new layer with the last layer in the list
self.layers: list = [keras.layers.Input(shape=self.neurons)]
[self.layers.append(keras.layers.Dense(self.neurons, activation=self.activation_hidden_layers)(self.layers[-1])) for _ in range(num_hidden_layers)]
self.layers.append(keras.layers.Dense(self.neurons - self.dims_to_leave_out, activation=activation_hidden_layers)(self.layers[-1]))
# define multi-output layer by slicing the neurons from the last hidden layer
self.outputs: list = []
index_start: int = 0
for i in range(int((self.neurons - self.dims_to_leave_out)/self.neurons_per_output_layer)):
index_end: int = index_start + self.neurons_per_output_layer
self.outputs.append(keras.layers.Dense(self.output_dims_per_output_layer, activation=self.activation_output_layers)(self.layers[-1][:, index_start:index_end]))
index_start = index_end