Chainer - Python - 逻辑回归
Chainer - Python - Logistic Regression
我使用 Python 和 Chainer 创建了一个简单的逻辑回归模型,但我对最终结果并不完全满意。因此,我想得到一些帮助。一个限制:我不想用已经存在的功能交换已实现的功能。我知道 Chainer 中有损失函数,它们的结果几乎相同,但我正在创建的更复杂的模型是使用自定义损失函数。代码可在此处找到:
https://gist.github.com/kmjjacobs/62fc96ece695b47af8d667b060a64559
我想保持模型代码尽可能干净,但如您所见,call 方法是对损失方法的转发,我怀疑有一个在训练循环中调用损失方法的更简洁方法。我认为如果 call 方法输出预测会更清晰,并且有一个单独的损失方法来计算损失。您对此有何看法?
转换器功能我也不是很清楚。有没有更好的方法达到同样的效果?
您对编写 Chainer 代码有什么意见或最佳实践吗?
提前致谢!
首先你的主要问题是什么?分别定义损失函数和预测函数的最佳方式?
我看了你的代码,我认为 init_scope
的功能在 Link
和 Chain
之间是不同的。为此,您不能使用它在 Chain 中注册可学习参数。 (您当前使用的是 Link
而不是 Chain
。)
init_scope
in Link
用于注册参数,
https://docs.chainer.org/en/stable/tutorial/function.html#links-that-wrap-functions
https://github.com/chainer/chainer/blob/master/chainer/link.py#L197
init_scope
in Chain
用于注册其他links
,
https://docs.chainer.org/en/stable/tutorial/basic.html#write-a-model-as-a-chain
https://github.com/chainer/chainer/blob/master/chainer/link.py#L675
在你的情况下,我认为你可以只使用 chainer.links.Linear
到你的 LogisticRegressionModel
,或者你可以定义你自己的 Link
class,它具有可学习的参数 W
并在 LogisticRegressionModel
.
中使用自己的 link
class
我使用 Python 和 Chainer 创建了一个简单的逻辑回归模型,但我对最终结果并不完全满意。因此,我想得到一些帮助。一个限制:我不想用已经存在的功能交换已实现的功能。我知道 Chainer 中有损失函数,它们的结果几乎相同,但我正在创建的更复杂的模型是使用自定义损失函数。代码可在此处找到:
https://gist.github.com/kmjjacobs/62fc96ece695b47af8d667b060a64559
我想保持模型代码尽可能干净,但如您所见,call 方法是对损失方法的转发,我怀疑有一个在训练循环中调用损失方法的更简洁方法。我认为如果 call 方法输出预测会更清晰,并且有一个单独的损失方法来计算损失。您对此有何看法?
转换器功能我也不是很清楚。有没有更好的方法达到同样的效果?
您对编写 Chainer 代码有什么意见或最佳实践吗?
提前致谢!
首先你的主要问题是什么?分别定义损失函数和预测函数的最佳方式?
我看了你的代码,我认为 init_scope
的功能在 Link
和 Chain
之间是不同的。为此,您不能使用它在 Chain 中注册可学习参数。 (您当前使用的是 Link
而不是 Chain
。)
init_scope
inLink
用于注册参数, https://docs.chainer.org/en/stable/tutorial/function.html#links-that-wrap-functions https://github.com/chainer/chainer/blob/master/chainer/link.py#L197init_scope
inChain
用于注册其他links
, https://docs.chainer.org/en/stable/tutorial/basic.html#write-a-model-as-a-chain https://github.com/chainer/chainer/blob/master/chainer/link.py#L675
在你的情况下,我认为你可以只使用 chainer.links.Linear
到你的 LogisticRegressionModel
,或者你可以定义你自己的 Link
class,它具有可学习的参数 W
并在 LogisticRegressionModel
.
link
class