Closed zuowanbushiwo closed 1 year ago
如果你去看ncnn::Mat的构造函数就能知道,你设定的in1.create(2, 1, 128)实际对应到pytorch的维度为[128, 1, 2],因为ncnn::Mat的构造函数列表顺序是(w, h, d, c)这样的,有多个重载。
@deepage 感谢回复,那in0 是什么情况, 我是不是应该写成in0.create(512,1,1)? 没有报错是因为,c 和 h 是1的原因?
in0确实应该写成in0.create(512,1,1),没有因为这个报错,可能是并不需要它维度上有越界吧。具体需要看这个输入参与的运算,我不会LSTM。而第二个输入会出错,是因为hidden_size设定成128了,这样维度就对不上了。
@deepage 非常感谢
detail | 详细描述 | 詳細な説明
Python 代码如下:
CPP 代码
CMakeLists.txt
如果是 in1.create(128, 1, 2); 这时输出都正常, 也是想要的维度:
如果是 in1.create(2, 1, 128); 推理时就会出现崩溃;
我觉得这个地方有点转不过弯来,为什么是 in1 是 (128, 1, 2), 我开始一直使用(2, 1, 128) 就莫名其妙的崩溃,后来debug 到这个地方,再乱猜的,竟然对了。而且python 推理的时候也是(2,1,128).
test_ltsm.ncnn.param