首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nolearn中的多类回归?

nolearn中的多类回归?
EN

Stack Overflow用户
提问于 2015-08-30 00:03:56
回答 1查看 193关注 0票数 0

我正在尝试使用nolearn构建一个神经网络,它可以在多个类上进行回归。

例如:

代码语言:javascript
复制
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尺寸错误。(参数中的尺寸与gemm (128,1000)x(1000,26)->(128,1)的尺寸不匹配)

Y标签是连续变量,对应于一个类。我尝试将Y标签重塑为(行,类),但这意味着我必须将许多Y标签的值设为0(因为该类的值是未知的)。有没有办法在不将某些y_labels设置为0的情况下做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2015-08-30 19:10:09

如果要对26个类进行多类(或多标签)回归,则输出不能具有shape (1082,),而必须具有(1082, 26)。为了对输出进行预处理,您可以使用sklearn.preprocessing.label_binarize,它会将您的一维输出转换为二维输出。

此外,您的输出非线性应为softmax函数,以便输出的行和为1。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32288002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档