69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import unittest
|
|
|
|
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
|
|
|
|
import tensorflow as tf
|
|
import tensorlayer as tl
|
|
|
|
from tests.utils import CustomTestCase
|
|
|
|
|
|
def model(x, is_train=True, reuse=False, name_scope="env1"):
|
|
with tf.variable_scope(name_scope, reuse=reuse):
|
|
net = tl.layers.InputLayer(x, name='input')
|
|
net = tl.layers.TimeDistributedLayer(
|
|
net, layer_class=tl.layers.DenseLayer, args={
|
|
'n_units': 50,
|
|
'name': 'dense'
|
|
}, name='time_dense'
|
|
)
|
|
return net
|
|
|
|
|
|
class Layer_Time_Distributed_Test(CustomTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
|
|
batch_size = 32
|
|
timestep = 20
|
|
input_dim = 100
|
|
|
|
cls.x = tf.placeholder(dtype=tf.float32, shape=[batch_size, timestep, input_dim], name="encode_seqs")
|
|
net = model(cls.x, is_train=True, reuse=False)
|
|
|
|
cls.net_shape = net.outputs.get_shape().as_list()
|
|
cls.n_params = net.count_params()
|
|
net.print_params(False)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
tf.reset_default_graph()
|
|
|
|
def test_net_shape(self):
|
|
self.assertEqual(self.net_shape, [32, 20, 50])
|
|
|
|
def test_net_n_params(self):
|
|
self.assertEqual(self.n_params, 5050)
|
|
|
|
def test_reuse(self):
|
|
|
|
with self.assertNotRaises(Exception):
|
|
model(self.x, is_train=True, reuse=False, name_scope="env2")
|
|
model(self.x, is_train=False, reuse=True, name_scope="env2")
|
|
|
|
with self.assertRaises(Exception):
|
|
model(self.x, is_train=True, reuse=False) # Already defined model with the same var_scope
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
tf.logging.set_verbosity(tf.logging.DEBUG)
|
|
tl.logging.set_verbosity(tl.logging.DEBUG)
|
|
|
|
unittest.main()
|