As you know, basically weight-normalized modules have weight_g and weight_v unless nn.utils.remove_weight_norm is applied to those modules, as follows.
In [5]: wn_linear = weight_norm(nn.Linear(2, 2, bias=False))

In [6]: wn_linear.state_dict()
Out[6]:
OrderedDict([('weight_g',
              tensor([[0.3002],
                      [0.3428]])),
             ('weight_v',
              tensor([[-0.2730, -0.1248],
                      [-0.3416, -0.0280]]))])

In [7]: nn.utils.remove_weight_norm(wn_linear).state_dict()
Out[7]:
OrderedDict([('weight',
              tensor([[-0.2730, -0.1248],
                      [-0.3416, -0.0280]]))])

So, I’m not quite confident but one trick in my mind is, register weight normalization after load_state_dict as follows:
  
      gist.github.com
  
  
    https://gist.github.com/crcrpar/d3493b56364df1ddf413e25e0013f68e 2
state-dict-for-weight-norm-conv2d-doesnt-give-weight-g-and-weight-v-keys.ipynb
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "correct-hebrew",
   "metadata": {},
   "outputs": [],
   "source": [
    "# https://discuss.pytorch.org/t/state-dict-for-weight-norm-conv2d-doesnt-give-weight-g-and-weight-v-keys/113876\n",
This file has been truncated. show original