Functions using placeholder_net.W will back-propagate through to trainable_net.W. Note that you won’t be able to optimize placeholder_net.W because it will be an intermediate Variable, not a parameter.
To avoid the TypeError, do:
del net3.conv0.weight
net3.conv0.weight = net.conv0.weight + net2.conv0.weight

This will remove weight as an nn.Parameter and add it back as a (non-optimizable) Variable.