layers.concat() 报错 AttributeError: 'NoneType' object has no attribute 'dtype'
Created by: dingsiyu
- 版本、环境信息: 1)PaddlePaddle版本:1.5 2)CPU/GPU:CUDA 10和cuDNN 7.4 3)系统环境:centos 6 4)Python版本号 python3 5)显存信息
- 复现信息:如为报错,请给出复现环境、复现步骤
- 问题描述:请详细描述您的问题,同步贴出报错信息、日志/代码关键片段
def boolean_mask_(tensor, mask, name="boolean_mask", axis=None):
mask_int = layers.cast(mask, dtype='int32')
shape_mask = layers.shape(mask_int)
ndims_mask = shape_mask.shape[0]
shape_tensor = layers.shape(tensor)
if ndims_mask == 0:
raise ValueError("mask cannot be scalar.")
if ndims_mask is None:
raise ValueError(
"Number of mask dimensions must be specified, even if some dimensions"
" are None. E.g. shape=[None] is ok, but shape=None is not.")
axis = 0 if axis is None else axis
# shape_tensor[axis:axis + ndims_mask].assert_is_compatible_with(shape_mask)
leading_size = shape_tensor[axis]
for i in range(axis + 1, axis + ndims_mask):
leading_size *= shape_tensor[i]
if axis == 0:
if axis + ndims_mask < shape_tensor.shape[0]:
tensor = layers.reshape(
tensor,
layers.concat([[leading_size], layers.shape(tensor)[axis + ndims_mask:]], 0))
else:
tensor = layers.reshape(tensor, [leading_size])
if axis > 0:
if axis + ndims_mask < shape_tensor.shape[0]:
tensor = layers.reshape(
tensor,
layers.concat([layers.shape(tensor)[:axis], [leading_size],
layers.shape(tensor)[axis + ndims_mask:]], 0))
else:
tensor = layers.reshape(
tensor,
layers.concat([layers.shape(tensor)[:axis], [leading_size]], 0))
mask_int = layers.reshape(mask_int, [-1])
return _apply_mask_1d(tensor, mask_int, axis)
a_ = np.array([[1,2,3],[4,5,6],[7,8,9]], dtype='float32')
b_ = layers.create_tensor(dtype='float32')
layers.assign(a_, b_)
c1 = b_ >= 2.0
c2 = b_ <= 7.0
c_ = layers.logical_and(c1, c2)
a_2 = np.array([[[1,2,3],[4,5,6], [2,3,4]], [[2,3,4], [3,4,5], [4,5,6]], [[2,4,5], [1,3,4], [4,2,1]]], dtype='float32') b_2 = layers.create_tensor(dtype='float32') layers.assign(a_2, b_2)
re = boolean_mask(b_2, c_)