反馈一个bug
y=x[1:]
如果x的维度大于9999999,y的长度最多只有9999999
复现代码
import paddle
import paddle.fluid as fluid
import numpy as np
fluid.default_startup_program().random_seed = 1000
fluid.default_main_program().random_seed = 1000
import random
random.seed(0)
np.random.seed(0)
data = np.random.random((20000000)).astype(np.float32)
x = fluid.layers.data(name="x", shape=[20000000], dtype='float64')
y = x[1:]
place = fluid.CUDAPlace(0)
exe = fluid.Executor(place)
exe.run(fluid.default_startup_program())
outs = exe.run(feed={'x':data},
fetch_list=[y.name])
print(outs[0].shape)
4条答案
按热度按时间k75qkfdt1#
看起来应该是_pySliceTensor的问题,请 @lanxianghit 安排下相关同学跟进?
gk7wooem2#
暂时先assign @Thunderbrook 跟进
7d7tgy0s3#
slice op需显式调用
ffvjumwh4#
slice op需显式调用
显示调用可能需要调用shape op,速度更慢,也不方便使用。例如
length = fluid.layers.shape(x)
y = fluid.layers.slice(x, axes=[0], starts=[1], ends=[length])
最好可以用
y=x[1:]
这种用法