Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

load parameters error with the same code exported by HybridBlock #10601

Closed
ariwaranosai opened this issue Apr 18, 2018 · 1 comment
Closed

load parameters error with the same code exported by HybridBlock #10601

ariwaranosai opened this issue Apr 18, 2018 · 1 comment

Comments

@ariwaranosai
Copy link
Contributor

ariwaranosai commented Apr 18, 2018

Description

HybridBlock export don't remove self.prefix in name, but load_params will insert_prefix. This is confusing for

net = get_mode()
# some train step
net.export(filename)

new_net = get_model()
new_net.load_params("path to params",
        ctx=mx.cpu()) # this line will raise error AssertionError: Parameter XXX is missing in file XXX

since prefix will be insert twice during load params.

It would be nice, give a parameter to control whether remove self.prefix or not.

Environment info (Required)

----------Python Info----------
Version      : 3.6.3
Compiler     : GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)
Build        : ('default', 'Oct  6 2017 12:04:38')
Arch         : ('64bit', '')
------------Pip Info-----------
Version      : 9.0.1
Directory    : /Users/feiquan/anaconda3/lib/python3.6/site-packages/pip
----------MXNet Info-----------
/Users/feiquan/anaconda3/lib/python3.6/site-packages/urllib3/contrib/pyopenssl.py:46: DeprecationWarning: OpenSSL.rand is deprecated - you should use os.urandom instead
  import OpenSSL.SSL
Version      : 1.0.0
Directory    : /Users/feiquan/anaconda3/lib/python3.6/site-packages/mxnet
Commit Hash   : 25720d0e3c29232a37e2650f3ba3a2454f9367bb
----------System Info----------
Platform     : Darwin-16.7.0-x86_64-i386-64bit
system       : Darwin
node         : feiquandeMacBook-Pro.local
release      : 16.7.0
version      : Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64
----------Hardware Info----------
machine      : x86_64
processor    : i386
b'machdep.cpu.extfeatures: SYSCALL XD 1GBPAGE EM64T LAHF LZCNT PREFETCHW RDTSCP TSCI'
b'machdep.cpu.leaf7_features: SMEP ERMS RDWRFSGS TSC_THREAD_OFFSET BMI1 HLE AVX2 BMI2 INVPCID RTM SMAP RDSEED ADX IPT SGX FPU_CSDS MPX CLFSOPT'
b'machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C'
b'machdep.cpu.brand_string: Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz'

Package used (Python/R/Scala/Julia):
I'm using Python

Error Message:

Traceback (most recent call last):
File "/Users/feiquan/Code/work/wai-models/tachikoma/audio/tdcnn_mxnet.py", line 126, in
check_model.load_params("checkpoints/res-0000.params", ctx=mx.cpu())
File "/Users/feiquan/anaconda3/envs/tf1.3/lib/python3.5/site-packages/mxnet/gluon/block.py", line 317, in load_params
self.prefix)
File "/Users/feiquan/anaconda3/envs/tf1.3/lib/python3.5/site-packages/mxnet/gluon/parameter.py", line 673, in load
"Parameter %s is missing in file %s"%(name[lprefix:], filename)
AssertionError: Parameter batchnorm0_gamma is missing in file checkpoints/res-0000.params

Minimum reproducible example

net = get_mode() # create model by HybridBlock or gluon
# some train step
net.export(filename) 

new_net = get_model()
new_net.load_params("path to params", ctx=mx.cpu()) // this will raise error AssertionError: Parameter XXX is missing in file XXX

What have you tried to solve it?

I try to solve it by change HybridBlock's export function in mxnet/gluon/block.py

        for name, param in self.collect_params().items():
            if name in arg_names:
                name = name[name.startswith(self.prefix) and len(self.prefix):]
                arg_dict['arg:%s'%name] = param._reduce()
            else:
                assert name in aux_names
                name = name[name.startswith(self.prefix) and len(self.prefix):]
                arg_dict['aux:%s'%name] = param._reduce()
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants