위 화면은 에러 화면입니다. inputQnormalizeFold optimizer에서 문제가 발생하는데 이유를 모르겠습니다. 도움 부탁드립니다.
아래는 시도한 명령과 현재 컨버팅 시도 중인 모델 onnx 파일 링크 입니다.
python EnlightSDK/converter.py ./sample/archface.onnx --type unknown --mean 0.5 0.5 0.5 --std 0.5 0.5 0.5 --omit-post-process --dataset Custom --dataset-root my_dataset_path --enable-track
위의 내용은 주말 간 해결하였으나, 해결 못한 것이 있어 추가적으로 문의 드립니다. python EnlightSDK/converter.py ./sample/archface.onnx --type unknown --mean 0.5 0.5 0.5 --std 0.5 0.5 0.5 --omit-post-process --dataset Custom --dataset-root my_dataset_path --enable-track
위 명령으로 컨버팅 시도 중 [WARN] Mismatch layer.dims and tensor.shape ([512, 1, 1] vs [512, 1, 512])
아래 경고가 발생합니다.
현재 Output Layer중 Reshape를 통한 차원 축소가 이상하게 이루어 지고 있는 것 같습니다.
batch_size를 1이라 가정했을때 output shape는 (1,512)가 나오는 것을 pytorch 모델과 onnx 모델 변환 이전 과정에서는 확인했으나, converter를 거치는 과정에서 문제가 발생하는 것 같습니다.
답변 감사합니다. 추가적으로 몇가지 더 여쭙습니다.
BatchNormalization2D를 사용할 때, 특정 신경망 구조에서만 적합하게 동작하는지 궁금합니다. Batchnormalization2D 사용 시 Batchnormal2d → Conv2d 순서로 배치하면,
Start InputQNormalizeFold optimizer
Traceback (most recent call last):
File “EnlightSDK/converter.py”, line 668, in
main()
File “EnlightSDK/converter.py”, line 644, in main
model = prepare_model(args)
File “EnlightSDK/converter.py”, line 134, in prepare_model
net = optimizer.optimize(net)
File “”, line 41, in optimize
File “”, line 98, in apply
File “”, line 44, in apply
RuntimeError: The size of tensor a (3) must match the size of tensor b (64) at non-singleton dimension 1
위 에러가 발생합니다.
제 생각으로는 Conv->BatchNormal->Activation 순서로 레이어를 구성할 경우 하나로 묶이게 되어 이런 현상이 발생하는 것 같은데 이를 피할 수는 없을까요?
또한 제 경우에는 Batchnormalization 추가 시 변환 과정에서 양자 손실이 급격히 증가하는 것 같은데 정상적인 상황인지도 궁금합니다.