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_initializers.py 3.1 kB

4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. import numpy as np
  9. from tests.utils import CustomTestCase
  10. class Test_Leaky_ReLUs(CustomTestCase):
  11. @classmethod
  12. def setUpClass(cls):
  13. cls.ni = tl.layers.Input(shape=[16, 10])
  14. cls.w_shape = (10, 5)
  15. cls.eps = 0.0
  16. @classmethod
  17. def tearDownClass(cls):
  18. pass
  19. def init_dense(self, w_init):
  20. return tl.layers.Dense(n_units=self.w_shape[1], in_channels=self.w_shape[0], W_init=w_init)
  21. def test_zeros(self):
  22. dense = self.init_dense(tl.initializers.zeros())
  23. self.assertEqual(np.sum(dense.all_weights[0].numpy() - np.zeros(shape=self.w_shape)), self.eps)
  24. nn = dense(self.ni)
  25. def test_ones(self):
  26. dense = self.init_dense(tl.initializers.ones())
  27. self.assertEqual(np.sum(dense.all_weights[0].numpy() - np.ones(shape=self.w_shape)), self.eps)
  28. nn = dense(self.ni)
  29. def test_constant(self):
  30. dense = self.init_dense(tl.initializers.constant(value=5.0))
  31. self.assertEqual(np.sum(dense.all_weights[0].numpy() - np.ones(shape=self.w_shape) * 5.0), self.eps)
  32. nn = dense(self.ni)
  33. # test with numpy arr
  34. arr = np.random.uniform(size=self.w_shape).astype(np.float32)
  35. dense = self.init_dense(tl.initializers.constant(value=arr))
  36. self.assertEqual(np.sum(dense.all_weights[0].numpy() - arr), self.eps)
  37. nn = dense(self.ni)
  38. def test_RandomUniform(self):
  39. dense = self.init_dense(tl.initializers.random_uniform(minval=-0.1, maxval=0.1, seed=1234))
  40. print(dense.all_weights[0].numpy())
  41. nn = dense(self.ni)
  42. def test_RandomNormal(self):
  43. dense = self.init_dense(tl.initializers.random_normal(mean=0.0, stddev=0.1))
  44. print(dense.all_weights[0].numpy())
  45. nn = dense(self.ni)
  46. def test_TruncatedNormal(self):
  47. dense = self.init_dense(tl.initializers.truncated_normal(mean=0.0, stddev=0.1))
  48. print(dense.all_weights[0].numpy())
  49. nn = dense(self.ni)
  50. def test_deconv2d_bilinear_upsampling_initializer(self):
  51. rescale_factor = 2
  52. imsize = 128
  53. num_channels = 3
  54. num_in_channels = 3
  55. num_out_channels = 3
  56. filter_shape = (5, 5, num_out_channels, num_in_channels)
  57. ni = tl.layers.Input(shape=(1, imsize, imsize, num_channels))
  58. bilinear_init = tl.initializers.deconv2d_bilinear_upsampling_initializer(shape=filter_shape)
  59. deconv_layer = tl.layers.DeConv2dLayer(
  60. shape=filter_shape, outputs_shape=(1, imsize * rescale_factor, imsize * rescale_factor, num_out_channels),
  61. strides=(1, rescale_factor, rescale_factor, 1), W_init=bilinear_init, padding='SAME', act=None,
  62. name='g/h1/decon2d'
  63. )
  64. nn = deconv_layer(ni)
  65. def test_config(self):
  66. init = tl.initializers.constant(value=5.0)
  67. new_init = tl.initializers.Constant.from_config(init.get_config())
  68. if __name__ == '__main__':
  69. unittest.main()

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