作为个人项目的一部分,我试图用自己的数据修改ano文档(Multilayer Perceptron)中给出的示例代码。在
到目前为止,我设法以所需的格式带来我自己的(文本)数据,我想构建一个二进制分类器。问题是当我写下输出的数量是1,也就是说
classifier = MLP(rng=rng, input=x, n_in=49, n_hidden=n_hidden, n_out=1)
我得到以下错误:
^{pr2}$我的训练数据(在转换为ano共享类型之前)的输出如下:
array([1, 1, 1, ..., 0, 0, 0], dtype=int64)
如果没有任何一个神经元的输出都是不正常的,那么就没有了。在
有人能解释一下为什么二进制输出的代码会给我一个错误吗?我该怎么做?在
谢谢你!在
在MLP教程中用作输出层的logistic回归类不是“标准”logistic回归,它给出一个输出值并仅区分两个类,而是一个多项式logistic回归(又称Softmax回归),它为每个类提供一个值,告诉输入属于它们的概率。所以,如果你有10个类,你也需要10个单位,显然所有输出单位的总和等于1,因为这是一个概率分布。在
尽管使用了类名(“LogistRegression”),但它在linked source code中的doctoring不怀疑它的真正意图(
'''Multi-class Logistic Regression Class [...]'''
)。在而在您的问题中,您有两个类,您还需要2个输出单元,
n_out
的值必须是2而不是1。当然,对于两个类,一个输出的值总是1减去另一个的值。在另外,检查您是否真的需要int64而不是int32。西亚诺对第二个有更好的支持。在
相关问题 更多 >
编程相关推荐