forked from TensorLayer/tensorlayer3
182 lines
4.6 KiB
Python
182 lines
4.6 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
import os
|
|
import unittest
|
|
|
|
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
|
|
|
|
import tensorlayer as tl
|
|
|
|
from tests.utils import CustomTestCase
|
|
import numpy as np
|
|
|
|
|
|
class Layer_BinaryDense_Test(CustomTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(self):
|
|
print("-" * 20, "Layer_BinaryDense_Test", "-" * 20)
|
|
self.batch_size = 4
|
|
self.inputs_shape = [self.batch_size, 10]
|
|
|
|
self.ni = tl.layers.Input(self.inputs_shape, name='input_layer')
|
|
self.layer1 = tl.layers.BinaryDense(n_units=5)
|
|
|
|
self.layer2 = tl.layers.BinaryDense(n_units=5, in_channels=10)
|
|
|
|
self.n1 = self.layer1(self.ni)
|
|
self.n2 = self.layer2(self.ni)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
pass
|
|
|
|
def test_layer_n1(self):
|
|
print(self.n1[0])
|
|
self.assertEqual(tl.ops.ReduceSum()(self.n1).numpy() % 1, 0.0) # should be integer
|
|
|
|
def test_layer_n2(self):
|
|
print(self.n2[0])
|
|
self.assertEqual(tl.ops.ReduceSum()(self.n2).numpy() % 1, 0.0) # should be integer
|
|
|
|
|
|
class Layer_DorefaDense_Test(CustomTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(self):
|
|
print("-" * 20, "Layer_DorefaDense_Test", "-" * 20)
|
|
self.batch_size = 4
|
|
self.inputs_shape = [self.batch_size, 10]
|
|
|
|
self.ni = tl.layers.Input(self.inputs_shape, name='input_layer')
|
|
self.layer1 = tl.layers.DorefaDense(n_units=5)
|
|
self.layer2 = tl.layers.DorefaDense(n_units=5, in_channels=10)
|
|
|
|
self.n1 = self.layer1(self.ni)
|
|
self.n2 = self.layer2(self.ni)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
pass
|
|
|
|
def test_layer_n1(self):
|
|
print(self.n1[0])
|
|
|
|
def test_layer_n2(self):
|
|
print(self.n2[0])
|
|
|
|
|
|
class Layer_DropconnectDense_Test(CustomTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(self):
|
|
print("-" * 20, "Layer_DropconnectDense_Test", "-" * 20)
|
|
self.batch_size = 4
|
|
self.inputs_shape = [self.batch_size, 10]
|
|
|
|
self.ni = tl.layers.Input(self.inputs_shape, name='input_layer')
|
|
self.layer1 = tl.layers.DropconnectDense(n_units=5, keep=1.0)
|
|
|
|
self.layer2 = tl.layers.DropconnectDense(n_units=5, in_channels=10, keep=0.01)
|
|
|
|
self.n1 = self.layer1(self.ni)
|
|
self.n2 = self.layer2(self.ni)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
pass
|
|
|
|
def test_layer_n1(self):
|
|
print(self.n1[0])
|
|
|
|
def test_layer_n2(self):
|
|
print(self.n2[0])
|
|
|
|
|
|
class Layer_QuanDense_Test(CustomTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(self):
|
|
print("-" * 20, "Layer_QuanDense_Test", "-" * 20)
|
|
self.batch_size = 4
|
|
self.inputs_shape = [self.batch_size, 10]
|
|
|
|
self.ni = tl.layers.Input(self.inputs_shape, name='input_layer')
|
|
self.layer1 = tl.layers.QuanDense(n_units=5)
|
|
|
|
self.layer2 = tl.layers.QuanDense(n_units=5, in_channels=10)
|
|
|
|
self.n1 = self.layer1(self.ni)
|
|
self.n2 = self.layer2(self.ni)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
pass
|
|
|
|
def test_layer_n1(self):
|
|
print(self.n1[0])
|
|
|
|
def test_layer_n2(self):
|
|
print(self.n2[0])
|
|
|
|
|
|
class Layer_QuanDenseWithBN_Test(CustomTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(self):
|
|
print("-" * 20, "Layer_QuanDenseWithBN_Test", "-" * 20)
|
|
self.batch_size = 4
|
|
self.inputs_shape = [self.batch_size, 10]
|
|
|
|
self.inputs = tl.initializers.TruncatedNormal()(shape=self.inputs_shape)
|
|
self.layer1 = tl.layers.QuanDenseWithBN(n_units=5)
|
|
self.layer2 = tl.layers.QuanDenseWithBN(n_units=5, in_channels=10)
|
|
|
|
self.n1 = self.layer1(self.inputs)
|
|
self.n2 = self.layer2(self.inputs)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
pass
|
|
|
|
def test_layer_n1(self):
|
|
print(self.n1[0])
|
|
|
|
def test_layer_n2(self):
|
|
print(self.n2[0])
|
|
|
|
|
|
class Layer_TernaryDense_Test(CustomTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(self):
|
|
print("-" * 20, "Layer_BinaryDense_Test", "-" * 20)
|
|
self.batch_size = 4
|
|
self.inputs_shape = [self.batch_size, 10]
|
|
|
|
self.inputs = tl.layers.Input(self.inputs_shape, name='input_layer')
|
|
self.layer1 = tl.layers.TernaryDense(n_units=5)
|
|
self.layer2 = tl.layers.TernaryDense(n_units=5, in_channels=10)
|
|
|
|
self.n1 = self.layer1(self.inputs)
|
|
self.n2 = self.layer2(self.inputs)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
pass
|
|
|
|
def test_layer_n1(self):
|
|
print(np.unique(self.n1.numpy().reshape(-1)))
|
|
print(self.n1[0])
|
|
|
|
def test_layer_n2(self):
|
|
print(np.unique(self.n2.numpy().reshape(-1)))
|
|
print(self.n2[0])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
tl.logging.set_verbosity(tl.logging.DEBUG)
|
|
|
|
unittest.main()
|