Files
2026-07-13 12:40:42 +08:00

76 lines
2.4 KiB
Python

# Copyright (c) 2021 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.
import unittest
from collections import OrderedDict
import paddle
class TestDataFeeder(unittest.TestCase):
def test_lod_level_1_converter(self):
sequential = paddle.nn.Sequential()
for i in range(10):
sequential.add_sublayer(str(i), paddle.nn.Linear(i + 1, i + 1))
for item in sequential:
tmp = item
tmp = sequential[3:5]
self.assertEqual(len(tmp), 2)
tmp = sequential[-1]
self.assertEqual(tmp, sequential[9])
with self.assertRaises(IndexError):
tmp = sequential[10]
with self.assertRaises(IndexError):
tmp = sequential[-11]
def test_ordereddict_init(self):
od = OrderedDict(
[
('layer1', paddle.nn.Linear(4, 8)),
('layer2', paddle.nn.Linear(8, 16)),
('layer3', paddle.nn.Linear(16, 32)),
]
)
sequential = paddle.nn.Sequential(od)
# Check if layer names are preserved in order
self.assertEqual(
list(sequential._sub_layers.keys()), ['layer1', 'layer2', 'layer3']
)
# Check if layers can be accessed by name
self.assertIsInstance(sequential['layer1'], paddle.nn.Linear)
self.assertIsInstance(sequential['layer2'], paddle.nn.Linear)
# Check the order and length of layers
self.assertEqual(len(sequential), 3)
layers = list(sequential)
self.assertIsInstance(layers[0], paddle.nn.Linear)
self.assertIsInstance(layers[1], paddle.nn.Linear)
self.assertIsInstance(layers[2], paddle.nn.Linear)
# Check forward propagation
x = paddle.randn([2, 4])
y = sequential(x)
self.assertEqual(list(y.shape), [2, 32])
if __name__ == '__main__':
unittest.main()