Keras:2D 输入 -> 2D 输出?
Keras: 2D input -> 2D output?
我想构建一个神经网络来学习一组标准特征向量。因此,该集合的形状为 (N,100),其中 N 是样本数。但是,标签集的形状为 (Nx18)(例如,每个 "label" 是另一个包含 18 个元素的数组)。我对 keras 和神经网络很陌生,我只知道如何处理一维标签(例如二进制分类中的 0 或 1)。如何处理多维输出?
谢谢!
也许我没有完全理解这个问题,但最简单的方法是拥有一个包含 18 个神经元的输出层。每个神经元输出一个值,即输出将是一个包含 18 个值的向量。
一种可能的方法是使用隐藏层的前馈神经网络,例如包含 100 个神经元。为此,您将需要 Keras 中的 Dense layer。
nb_hidden = 100
model = Sequential()
model.add(Dense(input_dim = 100, output_dim = nb_hidden)
model.add(Dense(output_dim = 18, activation = 'softmax')
model.compile(loss='categorical_crossentropy', optimizer='adadelta')
考虑改变隐藏层的数量、一般网络拓扑(例如,包括 Dropout 层)和激活函数,直到获得好的结果。
我想构建一个神经网络来学习一组标准特征向量。因此,该集合的形状为 (N,100),其中 N 是样本数。但是,标签集的形状为 (Nx18)(例如,每个 "label" 是另一个包含 18 个元素的数组)。我对 keras 和神经网络很陌生,我只知道如何处理一维标签(例如二进制分类中的 0 或 1)。如何处理多维输出?
谢谢!
也许我没有完全理解这个问题,但最简单的方法是拥有一个包含 18 个神经元的输出层。每个神经元输出一个值,即输出将是一个包含 18 个值的向量。
一种可能的方法是使用隐藏层的前馈神经网络,例如包含 100 个神经元。为此,您将需要 Keras 中的 Dense layer。
nb_hidden = 100
model = Sequential()
model.add(Dense(input_dim = 100, output_dim = nb_hidden)
model.add(Dense(output_dim = 18, activation = 'softmax')
model.compile(loss='categorical_crossentropy', optimizer='adadelta')
考虑改变隐藏层的数量、一般网络拓扑(例如,包括 Dropout 层)和激活函数,直到获得好的结果。