forked from TensorLayer/tensorlayer3
57 lines
1.7 KiB
Python
57 lines
1.7 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
|
|
|
|
|
|
# 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()
|