- 版本、环境信息:
1)PaddlePaddle版本:1.2
4)系统环境:python 2.7
- 训练信息
1)单机/单卡
我训练的过程中用 save_persistables 保存的模型,然后程序停止了,我第二次运行程序的时候,我用 load_persistables 方式加载模型,然后训练的时候报错。说优化器MomentumOp的维度不一致
EnforceNotMetTraceback (most recent call last)<ipython-input-1-0317d6de6533> in <module>()
649 total_batch_count += 1
650 t1 = time.time()
--> 651 loss = exe.run(train_program, feed=feeder.feed(data), fetch_list=train_fetch_list)
652 period = time.time() - t1
653 loss = np.mean(np.array(loss))
/opt/conda/envs/py27-paddle1.2.0/lib/python2.7/site-packages/paddle/fluid/executor.pyc in run(self, program, feed, fetch_list, feed_var_name, fetch_var_name, scope, return_numpy, use_program_cache)
470
471 self._feed_data(program, feed, feed_var_name, scope)
--> 472 self.executor.run(program.desc, scope, 0, True, True)
473 outs = self._fetch_data(fetch_list, fetch_var_name, scope)
474 if return_numpy:
EnforceNotMet: Enforce failed. Expected param_dim == ctx->GetInputDim("Velocity"), but received param_dim:32 != ctx->GetInputDim("Velocity"):21, 1.
Param and Velocity of MomentumOp should have the same dimension. at [/paddle/paddle/fluid/operators/optimizers/momentum_op.h:64]
PaddlePaddle Call Stacks:
0 0x7f70fa297826p paddle::platform::EnforceNotMet::EnforceNotMet(std::__exception_ptr::exception_ptr, char const*, int) + 486
1 0x7f70fb30ade9p paddle::operators::MomentumOp::InferShape(paddle::framework::InferShapeContext*) const + 1945
11条答案
按热度按时间yqlxgs2m1#
设置优化器,保存模型,加载模型相关的代码如下
y1aodyip2#
贴一下你调用load_persistables 的地方的代码吧
“我训练的过程中用 save_persistables 保存的模型,然后程序停止了。”模型停止了是出错了么还是自然停止的。
tzxcd3kk3#
hi,你加载的是被剪切的模型么?
yshpjwxd4#
程序停止是我主动停止的,因为我感觉训练时候的某些超参设置不合理了。但是我还想接着中断那次的参数接着训练
r1wp621o5#
应该是完整的模型
dsf9zpds6#
save_persistables之后有修改网络结构么?
uqxowvwt7#
没有
jutyujz08#
MomentumOptimizer 有重新生成么。
yr9zkbsy9#
没有。是说需要么?
uqzxnwby10#
最后发现先调用
fluid.io.save_inference_mode
,然后调用fluid.io.save_persistables
。训练时候使用fluid.io.load_persistables load save_persistables
存储的模型会出现问题。ldxq2e6h11#
是的,我把两个函数反过来,先调用save_persistables,再调用save_inference_model,此时可以加载模型重新训练。