#!/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 # define the network def mlp(x, is_train=True, reuse=False): with tf.variable_scope("MLP", reuse=reuse): tl.layers.set_name_reuse(reuse) # print warning network = tl.layers.InputLayer(x, name='input') network = tl.layers.DropoutLayer(network, keep=0.8, is_fix=True, is_train=is_train, name='drop1') network = tl.layers.DenseLayer(network, n_units=800, act=tf.nn.relu, name='relu1') network = tl.layers.DropoutLayer(network, keep=0.5, is_fix=True, is_train=is_train, name='drop2') network = tl.layers.DenseLayer(network, n_units=800, act=tf.nn.relu, name='relu2') network = tl.layers.DropoutLayer(network, keep=0.5, is_fix=True, is_train=is_train, name='drop3') network = tl.layers.DenseLayer(network, n_units=10, name='output') return network class MLP_Reuse_Test(CustomTestCase): @classmethod def setUpClass(cls): # define placeholder cls.x = tf.placeholder(tf.float32, shape=[None, 784], name='x') # define inferences mlp(cls.x, is_train=True, reuse=False) mlp(cls.x, is_train=False, reuse=True) @classmethod def tearDownClass(cls): tf.reset_default_graph() def test_reuse(self): with self.assertRaises(Exception): mlp(self.x, is_train=False, 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()