MCPcopy Create free account
hub / github.com/PaddlePaddle/Paddle / get_shape_tensor_inputs

Function get_shape_tensor_inputs

python/paddle/utils/layers_utils.py:406–455  ·  view source on GitHub ↗
(inputs, attrs, shape, op_type)

Source from the content-addressed store, hash-verified

404
405
406def get_shape_tensor_inputs(inputs, attrs, shape, op_type):
407 from paddle.tensor import fill_constant
408
409 def _get_attr_shape(list_shape):
410 attr_shape = []
411 for idx, dim in enumerate(list_shape):
412 if isinstance(dim, Variable):
413 attr_shape.append(-1)
414 else:
415 attr_shape.append(dim)
416 return attr_shape
417
418 def _get_shape_tensor(list_shape):
419 shape_tensor_list = []
420 for idx, dim in enumerate(list_shape):
421 if isinstance(dim, Variable):
422 dim.stop_gradient = True
423 check_dtype(
424 dim.dtype,
425 'shape[' + str(idx) + ']',
426 ['int32', 'int64'],
427 op_type,
428 f'(When type of shape in {op_type} is list or tuple.)',
429 )
430 if convert_dtype(dim.dtype) == 'int64':
431 dim = paddle.cast(x=dim, dtype='int32')
432 shape_tensor_list.append(dim)
433 else:
434 temp_out = fill_constant([], 'int32', dim, force_cpu=True)
435 shape_tensor_list.append(temp_out)
436 return shape_tensor_list
437
438 if isinstance(shape, Variable):
439 shape.stop_gradient = True
440 check_dtype(
441 shape.dtype,
442 'shape',
443 ['int32', 'int64'],
444 'fill_constant',
445 f'(When type of shape in {op_type} is Variable.)',
446 )
447 if convert_dtype(shape.dtype) == 'int64':
448 shape = paddle.cast(shape, 'int32')
449 inputs["ShapeTensor"] = shape
450 elif isinstance(shape, (list, tuple)):
451 attrs["shape"] = _get_attr_shape(shape)
452 if _contain_var(shape):
453 inputs['ShapeTensorList'] = _get_shape_tensor(shape)
454 else:
455 raise TypeError("Shape only supports Variable, or list, or tuple.")
456
457
458def _convert_to_tensor_list(old_list, dtype="int32"):

Callers

nothing calls this directly

Calls 7

_get_attr_shapeFunction · 0.85
_contain_varFunction · 0.85
_get_shape_tensorFunction · 0.85
TypeErrorClass · 0.85
check_dtypeFunction · 0.50
convert_dtypeFunction · 0.50
castMethod · 0.45

Tested by

no test coverage detected