我正在尝试使用 nolearn 构建一个可以对多个类进行回归的神经网络。
例如:
net = NeuralNet(layers=layers_s,
input_shape=(None, 2048),
l1_num_units=8000,
l2_num_units=4000,
l3_num_units=2000,
l4_num_units=1000,
d1_p = 0.25,
d2_p = 0.25,
d3_p = 0.25,
d4_p = 0.1,
output_num_units=noutput,
output_nonlinearity=None,
regression=True,
objective_loss_function=lasagne.objectives.squared_error,
update_learning_rate=theano.shared(float32(0.1)),
update_momentum=theano.shared(float32(0.8)),
on_epoch_finished=[
AdjustVariable('update_learning_rate', start=0.1, stop=0.001),
AdjustVariable('update_momentum', start=0.8, stop=0.999),
EarlyStopping(patience=200),
],
verbose=1,
max_epochs=1000)
noutput 是我想要进行回归的类的数量,如果我将它设置为 1 一切正常。当我使用 26(此处的类数)作为 output_num_unit 时,出现 Theano 维度错误。(args 与 gemm (128,1000)x(1000,26)->(128,1) 的尺寸不匹配)
Y 标签是连续变量,对应于一个类。我试图将 Y 标签重塑为 (rows,classes) 但这意味着我必须为很多 Y 标签赋予 0 值(因为该类的值是未知的)。有没有办法在不将一些 y_labels 设置为 0 的情况下做到这一点?