You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_tf_layers.py 8.1 kB

4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import unittest
  5. os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
  6. import tensorflow as tf
  7. import tensorlayer as tl
  8. from tests.utils import CustomTestCase
  9. class Layer_Convolution_1D_Test(CustomTestCase):
  10. @classmethod
  11. def setUpClass(cls):
  12. def get_network_1d(inputs, reuse=False):
  13. with tf.variable_scope("1D_network", reuse=reuse):
  14. net = tl.layers.InputLayer(inputs)
  15. net1 = tl.layers.Conv1d(net, name="Conv1d") # 2 params
  16. net2 = tl.layers.SeparableConv1d(net1, name="SeparableConv1d") # 3 params
  17. net3 = tl.layers.MaxPool1d(net2, (1, ), name="MaxPool1d") # 0 params
  18. net4 = tl.layers.MeanPool1d(net3, (1, ), name="MeanPool1d") # 0 params
  19. # HAO Test
  20. net5 = tl.layers.Conv1d(net4, name="Conv1d1") # 2 params
  21. net6 = tl.layers.SeparableConv1d(net5, name="SeparableConv1d1") # 3 params
  22. net7 = tl.layers.SeparableConv1d(net6, name="SeparableConv1d2") # 3 params
  23. return [net, net1, net2, net3, net4, net5, net6, net7]
  24. input_pl_train = tf.placeholder(tf.float32, [None, 32, 3])
  25. input_plh_test = tf.placeholder(tf.float32, [None, 32, 3])
  26. cls.network_1 = get_network_1d(input_pl_train, reuse=False)
  27. cls.network_2 = get_network_1d(input_plh_test, reuse=True)
  28. @classmethod
  29. def tearDownClass(cls):
  30. tf.reset_default_graph()
  31. def test_layer_net0(self):
  32. self.assertEqual(len(self.network_1[0].all_params), 0)
  33. self.assertEqual(len(self.network_2[0].all_params), 0)
  34. def test_layer_net1(self):
  35. self.assertEqual(len(self.network_1[1].all_params), 2)
  36. self.assertEqual(len(self.network_2[1].all_params), 2)
  37. def test_layer_net2(self):
  38. self.assertEqual(len(self.network_1[2].all_params), 5)
  39. self.assertEqual(len(self.network_2[2].all_params), 5)
  40. def test_layer_net3(self):
  41. self.assertEqual(len(self.network_1[3].all_params), 5)
  42. self.assertEqual(len(self.network_2[3].all_params), 5)
  43. def test_layer_net4(self):
  44. self.assertEqual(len(self.network_1[4].all_params), 5)
  45. self.assertEqual(len(self.network_2[4].all_params), 5)
  46. def test_layer_net5(self):
  47. self.assertEqual(len(self.network_1[5].all_params), 7)
  48. self.assertEqual(len(self.network_2[5].all_params), 7)
  49. def test_layer_net6(self):
  50. self.assertEqual(len(self.network_1[6].all_params), 10)
  51. self.assertEqual(len(self.network_2[6].all_params), 10)
  52. def test_layer_net7(self):
  53. self.assertEqual(len(self.network_1[7].all_params), 13)
  54. self.assertEqual(len(self.network_2[7].all_params), 13)
  55. class Layer_Convolution_2D_Test(CustomTestCase):
  56. @classmethod
  57. def setUpClass(cls):
  58. def get_network_2d(inputs, reuse=False):
  59. with tf.variable_scope("2D_network", reuse=reuse):
  60. net = tl.layers.InputLayer(inputs)
  61. net1 = tl.layers.Conv2d(net, name="Conv2d") # 2 params
  62. net2 = tl.layers.DeConv2d(net1, name="DeConv2d") # 2 params
  63. net3 = tl.layers.SeparableConv2d(net2, name="SeparableConv2d") # 3 params
  64. net4 = tl.layers.MaxPool2d(net3, (1, 1), name="MaxPool2d") # 0 params
  65. net5 = tl.layers.MeanPool2d(net4, (1, 1), name="MeanPool2d") # 0 params
  66. # HAO Test
  67. net6 = tl.layers.Conv2d(net5, name="Conv2d1") # 2 params
  68. net7 = tl.layers.DeConv2d(net6, name="DeConv2d1") # 2 params
  69. net8 = tl.layers.DeConv2d(net7, name="DeConv2d2") # 2 params
  70. net9 = tl.layers.SeparableConv2d(net8, name="SeparableConv2d1") # 3 params
  71. return [net, net1, net2, net3, net4, net5, net6, net7, net8, net9]
  72. input_pl_train = tf.placeholder(tf.float32, [None, 32, 32, 3])
  73. input_plh_test = tf.placeholder(tf.float32, [None, 32, 32, 3])
  74. cls.network_1 = get_network_2d(input_pl_train, reuse=False)
  75. cls.network_2 = get_network_2d(input_plh_test, reuse=True)
  76. def test_layer_net0(self):
  77. self.assertEqual(len(self.network_1[0].all_params), 0)
  78. self.assertEqual(len(self.network_2[0].all_params), 0)
  79. def test_layer_net1(self):
  80. self.assertEqual(len(self.network_1[1].all_params), 2)
  81. self.assertEqual(len(self.network_2[1].all_params), 2)
  82. def test_layer_net2(self):
  83. self.assertEqual(len(self.network_1[2].all_params), 4)
  84. self.assertEqual(len(self.network_2[2].all_params), 4)
  85. def test_layer_net3(self):
  86. self.assertEqual(len(self.network_1[3].all_params), 7)
  87. self.assertEqual(len(self.network_2[3].all_params), 7)
  88. def test_layer_net4(self):
  89. self.assertEqual(len(self.network_1[4].all_params), 7)
  90. self.assertEqual(len(self.network_2[4].all_params), 7)
  91. def test_layer_net5(self):
  92. self.assertEqual(len(self.network_1[5].all_params), 7)
  93. self.assertEqual(len(self.network_2[5].all_params), 7)
  94. def test_layer_net6(self):
  95. self.assertEqual(len(self.network_1[6].all_params), 9)
  96. self.assertEqual(len(self.network_2[6].all_params), 9)
  97. def test_layer_net7(self):
  98. self.assertEqual(len(self.network_1[7].all_params), 11)
  99. self.assertEqual(len(self.network_2[7].all_params), 11)
  100. def test_layer_net8(self):
  101. self.assertEqual(len(self.network_1[8].all_params), 13)
  102. self.assertEqual(len(self.network_2[8].all_params), 13)
  103. def test_layer_net9(self):
  104. self.assertEqual(len(self.network_1[9].all_params), 16)
  105. self.assertEqual(len(self.network_2[9].all_params), 16)
  106. @classmethod
  107. def tearDownClass(cls):
  108. tf.reset_default_graph()
  109. class Layer_Convolution_3D_Test(CustomTestCase):
  110. @classmethod
  111. def setUpClass(cls):
  112. def get_network_3d(inputs, reuse=False):
  113. with tf.variable_scope("3D_network", reuse=reuse):
  114. net = tl.layers.InputLayer(inputs)
  115. net1 = tl.layers.Conv3dLayer(
  116. net, shape=(2, 2, 2, 3, 32), strides=(1, 2, 2, 2, 1), name="Conv3dLayer"
  117. ) # 2 params
  118. net2 = tl.layers.DeConv3d(net1, name="DeConv3d") # 2 params
  119. net3 = tl.layers.MaxPool3d(net2, (1, 1, 1), name="MaxPool3d") # 0 params
  120. net4 = tl.layers.MeanPool3d(net3, (1, 1, 1), name="MeanPool3d") # 0 params
  121. # HAO Test
  122. net5 = tl.layers.DeConv3d(net4, name="DeConv3d1") # 2 params
  123. return [net, net1, net2, net3, net4, net5]
  124. input_pl_train = tf.placeholder(tf.float32, [None, 32, 32, 32, 3])
  125. input_plh_test = tf.placeholder(tf.float32, [None, 32, 32, 32, 3])
  126. cls.network_1 = get_network_3d(input_pl_train, reuse=False)
  127. cls.network_2 = get_network_3d(input_plh_test, reuse=True)
  128. @classmethod
  129. def tearDownClass(cls):
  130. tf.reset_default_graph()
  131. def test_layer_net0(self):
  132. self.assertEqual(len(self.network_1[0].all_params), 0)
  133. self.assertEqual(len(self.network_2[0].all_params), 0)
  134. def test_layer_net1(self):
  135. self.assertEqual(len(self.network_1[1].all_params), 2)
  136. self.assertEqual(len(self.network_2[1].all_params), 2)
  137. def test_layer_net2(self):
  138. self.assertEqual(len(self.network_1[2].all_params), 4)
  139. self.assertEqual(len(self.network_2[2].all_params), 4)
  140. def test_layer_net3(self):
  141. self.assertEqual(len(self.network_1[3].all_params), 4)
  142. self.assertEqual(len(self.network_2[3].all_params), 4)
  143. def test_layer_net4(self):
  144. self.assertEqual(len(self.network_1[4].all_params), 4)
  145. self.assertEqual(len(self.network_2[4].all_params), 4)
  146. def test_layer_net5(self):
  147. self.assertEqual(len(self.network_1[5].all_params), 6)
  148. self.assertEqual(len(self.network_2[5].all_params), 6)
  149. if __name__ == '__main__':
  150. tf.logging.set_verbosity(tf.logging.DEBUG)
  151. tl.logging.set_verbosity(tl.logging.DEBUG)
  152. unittest.main()

TensorLayer3.0 是一款兼容多种深度学习框架为计算后端的深度学习库。计划兼容TensorFlow, Pytorch, MindSpore, Paddle.