idekazuki / diary

記録
0 stars 1 forks source link

Epic-kitchen model入力時のエラー #61

Open idekazuki opened 5 years ago

idekazuki commented 5 years ago

動画の前処理方法を変更してモデルに入力したところ、エラーが発生した。最終的な入力サイズを調整するパラメータ--cropRsize を168に変更したところ正常に動作したが、既存研究とおり224で学習したいので原因を解明中。

ide-k@gp03> python 3dtrain.py --model pretrain_data/resnext-101-kinetics.pth --mode score --model_depth 101 --structure ResNeXt101 --batch_size 16 --model_name resnext --resnet_shortcut B --cropCsize 256 224 192 168 --cropRsize 224
load model data:pretrain_data/resnext-101-kinetics.pth
****____fine tuning mode____****
start from the beginning
Traceback (most recent call last):
  File "3dtrain.py", line 181, in <module>
    main_train()
  File "3dtrain.py", line 113, in main_train
    result = model(data)
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 547, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py", line 152, in forward
    outputs = self.parallel_apply(replicas, inputs, kwargs)
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py", line 162, in parallel_apply
    return parallel_apply(replicas, inputs, kwargs, self.device_ids[:len(replicas)])
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/nn/parallel/parallel_apply.py", line 85, in parallel_apply
    output.reraise()
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/_utils.py", line 369, in reraise
    raise self.exc_type(msg)
RuntimeError: Caught RuntimeError in replica 0 on device 0.
Original Traceback (most recent call last):
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/nn/parallel/parallel_apply.py", line 60, in _worker
    output = module(*input, **kwargs)
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 547, in __call__
    result = self.forward(*input, **kwargs)
  File "/host/space0/ide-k/mygit/libv3d/models/resnext.py", line 136, in forward
    x = self.fc(x)
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 547, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/nn/modules/linear.py", line 87, in forward
    return F.linear(input, self.weight, self.bias)
  File "/usr/local/anaconda3/lib/python3.6/site-packages/torch/nn/functional.py", line 1369, in linear
    ret = torch.addmm(bias, input, weight.t())
RuntimeError: size mismatch, m1: [8 x 32768], m2: [2048 x 125] at /opt/conda/conda-bld/pytorch_1565272279342/work/aten/src/THC/generic/THCTensorMathBlas.cu:273
idekazuki commented 5 years ago

fine tuning のために最終層をepic-kitchenに合わせて127categoryに変更している。 最終層を出力すると以下のようになっていた。 Linear(in_features=2048, out_features=125, bias=True) in_featuresの2048は--cropCsize, --batch_sizeを変更しても前層の出力が2048なので常に同じになる。 なぜout_featuresを125に減らしているのか忘れた。(ただの間違い?) 125に変更すると、エラーが出て動かなくなった。 エラー内容を見てみると m1: [8 x 32768], m2: [2048 x 125]という記述がある。m2の部分がモデル構築時に設定したパラメータで、m1の部分が実際の入力時のshapeを表していると考えられる。

このm1に対応する変数を探して表示する必要がある。

idekazuki commented 5 years ago

前層の出力を確認した。 AvgPool3d(kernel_size=(1, 4, 4), stride=1, padding=0) https://pytorch.org/docs/stable/nn.html#torch.nn.AvgPool3d