未验证 提交 4cbed3a3 编写于 作者: L liym27 提交者: GitHub

API (layers.data/fluid.data) error message enhancement (#23427)

* Api (fluid.data/layers.data) error message enhancement. test=develop
上级 067134f1
...@@ -15,8 +15,9 @@ ...@@ -15,8 +15,9 @@
import numpy as np import numpy as np
import six import six
from . import core from paddle.fluid import core
from .layer_helper import LayerHelper from paddle.fluid.layer_helper import LayerHelper
from paddle.fluid.data_feeder import check_dtype, check_type
__all__ = ['data'] __all__ = ['data']
...@@ -99,6 +100,10 @@ def data(name, shape, dtype='float32', lod_level=0): ...@@ -99,6 +100,10 @@ def data(name, shape, dtype='float32', lod_level=0):
""" """
helper = LayerHelper('data', **locals()) helper = LayerHelper('data', **locals())
check_type(name, 'name', (six.binary_type, six.text_type), 'data')
check_type(shape, 'shape', (list, tuple), 'data')
shape = list(shape) shape = list(shape)
for i in six.moves.range(len(shape)): for i in six.moves.range(len(shape)):
if shape[i] is None: if shape[i] is None:
......
...@@ -31,6 +31,7 @@ from ..layer_helper import LayerHelper ...@@ -31,6 +31,7 @@ from ..layer_helper import LayerHelper
from ..unique_name import generate as unique_name from ..unique_name import generate as unique_name
from ..transpiler.distribute_transpiler import DistributedMode from ..transpiler.distribute_transpiler import DistributedMode
import logging import logging
from ..data_feeder import check_dtype, check_type
__all__ = [ __all__ = [
'data', 'read_file', 'double_buffer', 'py_reader', 'data', 'read_file', 'double_buffer', 'py_reader',
...@@ -73,7 +74,7 @@ def data(name, ...@@ -73,7 +74,7 @@ def data(name,
Args: Args:
name(str): The name/alias of the variable, see :ref:`api_guide_Name` name(str): The name/alias of the variable, see :ref:`api_guide_Name`
for more details. for more details.
shape(list): Tuple declaring the shape. If :code:`append_batch_size` is shape(list|tuple): Tuple declaring the shape. If :code:`append_batch_size` is
True and there is no -1 inside :code:`shape`, it should be True and there is no -1 inside :code:`shape`, it should be
considered as the shape of the each sample. Otherwise, it should considered as the shape of the each sample. Otherwise, it should
be considered as the shape of the batched data. be considered as the shape of the batched data.
...@@ -107,6 +108,10 @@ def data(name, ...@@ -107,6 +108,10 @@ def data(name,
data = fluid.layers.data(name='x', shape=[784], dtype='float32') data = fluid.layers.data(name='x', shape=[784], dtype='float32')
""" """
helper = LayerHelper('data', **locals()) helper = LayerHelper('data', **locals())
check_type(name, 'name', (six.binary_type, six.text_type), 'data')
check_type(shape, 'shape', (list, tuple), 'data')
shape = list(shape) shape = list(shape)
for i in six.moves.range(len(shape)): for i in six.moves.range(len(shape)):
if shape[i] is None: if shape[i] is None:
......
# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import print_function
import unittest
import paddle.fluid as fluid
import paddle.fluid.layers as layers
from paddle.fluid import Program, program_guard
class TestApiDataError(unittest.TestCase):
def test_fluid_data(self):
with program_guard(Program(), Program()):
# 1. The type of 'name' in fluid.data must be str.
def test_name_type():
fluid.data(name=1, shape=[2, 25], dtype="bool")
self.assertRaises(TypeError, test_name_type)
# 2. The type of 'shape' in fluid.data must be list or tuple.
def test_shape_type():
fluid.data(name='data1', shape=2, dtype="bool")
self.assertRaises(TypeError, test_shape_type)
def test_layers_data(self):
with program_guard(Program(), Program()):
# 1. The type of 'name' in layers.data must be str.
def test_name_type():
layers.data(name=1, shape=[2, 25], dtype="bool")
self.assertRaises(TypeError, test_name_type)
# 2. The type of 'shape' in layers.data must be list or tuple.
def test_shape_type():
layers.data(name='data1', shape=2, dtype="bool")
self.assertRaises(TypeError, test_shape_type)
if __name__ == "__main__":
unittest.main()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册