tensorlayer3/tests/layers/test_layers_dense.py

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()