Skip to content

Commit

Permalink
Fix bug: GetAttrValue should deal with attr with attrType vector<doub…
Browse files Browse the repository at this point in the history
  • Loading branch information
liym27 authored Jan 19, 2021
1 parent 572c466 commit ff25c5b
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
9 changes: 9 additions & 0 deletions paddle/fluid/framework/attribute.cc
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,15 @@ Attribute GetAttrValue(const proto::OpDesc::Attr& attr_desc) {
}
return val;
}

case proto::AttrType::FLOAT64S: {
std::vector<double> val(attr_desc.float64s_size());
for (int i = 0; i < attr_desc.float64s_size(); ++i) {
val[i] = attr_desc.float64s(i);
}
return val;
}

default:
PADDLE_THROW(platform::errors::Unavailable("Unsupport attribute type %d.",
attr_desc.type()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,18 @@ def test_set_value(x):
return x


class LayerWithSetValue(paddle.nn.Layer):
def __init__(self, input_dim, hidden):
super(LayerWithSetValue, self).__init__()
self.linear = paddle.nn.Linear(input_dim, hidden)

@paddle.jit.to_static
def forward(self, x):
x = self.linear(x)
x[0] = 1
return x


class TestSliceWithoutControlFlow(unittest.TestCase):
def setUp(self):
self.init_input()
Expand Down Expand Up @@ -152,5 +164,17 @@ def init_dygraph_func(self):
self.dygraph_func = test_set_value


class TestSetValueWithLayerAndSave(unittest.TestCase):
def test_set_value_with_save(self):
prog_trans.enable(True)
model = LayerWithSetValue(input_dim=10, hidden=1)
x = paddle.full(shape=[5, 10], fill_value=5.0, dtype="float32")
paddle.jit.save(
layer=model,
path="./layer_use_set_value",
input_spec=[x],
output_spec=None)


if __name__ == '__main__':
unittest.main()

0 comments on commit ff25c5b

Please sign in to comment.