【发布时间】:2015-08-29 16:03:55
【问题描述】:
我正在尝试使用 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 的情况下做到这一点?
【问题讨论】:
-
你现在的
y_train是什么形状? -
y_train 具有以下形状:(1082,)。所有这些都是对应于不同(26)类的连续变量。
-
您确定它们是连续的,还是采用离散值(0、1、...、25)?
-
它们是连续的,所以我的意思是; [Class, Value]: [A, 7.9], [B, 5.2] [A, 4.2] 等等。所以有 26 个不同的类,但我想做(多类)回归的 1082 个连续值。
-
所以你想忽略这个类?我不明白,你能包括一个预期输出的例子吗?还有
y的前几行?
标签: nolearn