为使您的问题得到快速解决,建议参考以下模板:
【标题】
参数错误后的报错内容:“Error in atexit._run_exitfuncs: RuntimeError: assertion `i->ptr’ failed”
【版本、环境信息】
- MegEngine 版本:1.12
- CPU型号:Intel i7
- 系统环境:macos 10.15
- python版本: 3.6.7
【如为报错请提供以下复现信息】
- 复现步骤:
发现问题是24行的交叉熵函数存在问题,将23~24行改为:
loss = F.nn.cross_entropy(logits, tensor(i[1]).reshape(-1)) * (-1)
则问题解决,但是错误情况下的报错不太对劲,或许可以修下
运行关键片段代码即可复现
- 日志信息:
python3 4.py
14 23:46:43 load_serialized_obj_from_url: download to or using cached /Users/ppppp/.cache/megengine/serialized/009607_resnet18_naiveaug_70312_78a63ca6.pkl
Error in atexit._run_exitfuncs:
RuntimeError: assertion `i->ptr' failed at /Users/mac_ci/engine_group_share_dir/group_build_whl/megengine/imperative/src/impl/interpreter_impl.cpp:422: auto mgb::imperative::interpreter::intl::ChannelImpl::process_one_task(mgb::imperative::interpreter::intl::Command &)::(anonymous class)::operator()(auto &) const
extra message: Invalid input tensor ptr!
backtrace:
2 libmegengine_export.dylib 0x0000000111c70df6 _ZN3mgb13MegBrainErrorC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE + 54
3 libmegengine_export.dylib 0x0000000111c70733 _ZN3mgb15__assert_fail__EPKciS1_S1_S1_z + 259
4 _imperative_rt.cpython-36m-darwin.s 0x0000000111b966d9 _imperative_rt.cpython-36m-darwin.s + 1304281
5 _imperative_rt.cpython-36m-darwin.s 0x0000000111b9b1e6 _imperative_rt.cpython-36m-darwin.s + 1323494
6 _imperative_rt.cpython-36m-darwin.s 0x0000000111b9adf2 _imperative_rt.cpython-36m-darwin.s + 1322482
7 _imperative_rt.cpython-36m-darwin.s 0x0000000111b9b57e _imperative_rt.cpython-36m-darwin.s + 1324414
8 libsystem_pthread.dylib 0x0000000101464109 _pthread_start + 148
9 libsystem_pthread.dylib 0x000000010145fb8b thread_start + 15
- 代码关键片段:
import megengine as mge
import megengine.hub
import megengine.functional as F
import numpy as np
from megengine import tensor
from megengine.data.dataset import CIFAR10
from megengine.tensor import Parameter
from megengine.optimizer import Adam
from megengine.autodiff import GradManager
resnet18 = megengine.hub.load("megengine/models", "resnet18", pretrained=True)
train_dataset = CIFAR10(root="./dataset", train=True, download=True)
for i in train_dataset:
pre_noise = Parameter(tensor(np.zeros((32, 32, 3))))
opt = Adam(pre_noise, 0.01)
gm = GradManager().attach(pre_noise)
with gm:
i_noise = tensor(i[0]) + 10 * F.tanh(pre_noise)
i_noise = F.expand_dims(F.transpose((i_noise - 114.495) / 57.63, (2, 0, 1)), 0)
i_resize = F.nn.interpolate(i_noise, [224, 224], align_corners=None)
logits = resnet18(i_resize)
gt_one_hot = F.one_hot(tensor(i[1]), 10)
loss = F.nn.cross_entropy(logits, gt_one_hot) * (-1)
gm.backward(loss)
break