假设我创建了一个简单的完全连接的网络:
import chainer
import chainer.functions as F
import chainer.links as L
from chainer import Sequential
model = Sequential(
L.Linear(n_in, n_hidden),
F.relu,
L.Linear(n_hidden, n_hidden),
F.relu,
L.Linear(n_hidden, n_out)
)
# Compute the forward pass
y = model(x)我想用n_out输出来训练这个模型,然后,在对它进行训练之后,在微调网络之前添加额外的输出。
我已经找到了删除最后一层的方法,以便重新训练一个新的最后一层,但是这不是我想要的:我希望保留现有输出的权重。新产出的权重将随机初始化。
发布于 2019-10-24 01:37:42
引入一个附加的线性层L.Linear(n_hidden, n_extra_out) (不删除任何现有的)如何?其中n_extra_out是附加输出的数量。然后,您可以从最后一个F.relu中提取输出(您可能需要考虑将Sequential对象替换为类似于这个示例https://github.com/chainer/chainer/blob/master/examples/mnist/train_mnist.py#L16的chainer.Chain实现实例),并将其作为输入传递给预先训练过的最后一个线性层以及这个新层。然后可以使用F.concat连接这两个输出。
https://stackoverflow.com/questions/58521627
复制相似问题