Closed Cyprus-hy closed 3 years ago
Hi, you can do both, but I'd recommend running update only once and then saving the checkpoint. You can use compressai.utils.update_model
for this purpose if you use one of the implemented models.
Hi, you can do both, but I'd recommend running update only once and then saving the checkpoint. You can use
compressai.utils.update_model
for this purpose if you use one of the implemented models.
Thanks for your reply. I find that when I use "CompressionModel" to organize my network, the two ways(update->save->load and save->load->update) are both work ok. But if I use "nn.Module" instead, only save->load->update works, the other way reports a error, which seems like the size of parameters(the three in the update function) mismatch, which makes me confused. After I see the source code, I realize that you rewrite the "load_state_dict" function of CompressionModel, in which you change the size of parameters. So I guess maybe that's the reason, and in fact both the two ways are correct, because the buffers are also be loaded when we call "torch.load".
Yes, we need to resize the internal buffers related to the CDFs static parameters when loading a model. For most cases, inheriting from one of the predefined architectures should be enough.
Please re-open if you encounter any issues.
Hi, I really appreciate for your work, but I have a small question about updating entropybottleneck. That is, I insert a entropybottleneck in my network, and I save it after training without calling updata. When I do inference, I load checkpoint first and then call the update function of entropybottleneck, should this work ok? Or I should update entropybottleneck before save, and load checkpoint without update when I do inference. Thanks a lot.