Update tests under keras to use combinations.
1. Change all test_util.run_all_in_graph_and_eager_modes to combination. 2. Replace import tensorflow.python.keras with explicit module import. 3. Update BUILD file to not rely on the overall Keras target. PiperOrigin-RevId: 300960171 Change-Id: I6ef86a6562aaa363068b2554bb0a2c4bd9ab2e62
This commit is contained in:
parent
608ea8e583
commit
d40ff26630
tensorflow/python/keras
@ -540,8 +540,16 @@ tf_py_test(
|
||||
python_version = "PY3",
|
||||
tags = ["notsan"],
|
||||
deps = [
|
||||
":keras",
|
||||
":callbacks",
|
||||
":callbacks_v1",
|
||||
":combinations",
|
||||
":testing_utils",
|
||||
"//tensorflow/python:client_testlib",
|
||||
"//tensorflow/python:framework_ops",
|
||||
"//tensorflow/python:training_lib",
|
||||
"//tensorflow/python/keras/engine",
|
||||
"//tensorflow/python/keras/layers",
|
||||
"//tensorflow/python/keras/utils:np_utils",
|
||||
"//third_party/py/numpy",
|
||||
"@absl_py//absl/testing:parameterized",
|
||||
],
|
||||
|
@ -22,14 +22,19 @@ import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from absl.testing import parameterized
|
||||
import numpy as np
|
||||
|
||||
from tensorflow.core.framework import summary_pb2
|
||||
from tensorflow.python import keras
|
||||
from tensorflow.python.framework import ops
|
||||
from tensorflow.python.framework import test_util
|
||||
from tensorflow.python.keras import callbacks
|
||||
from tensorflow.python.keras import callbacks_v1
|
||||
from tensorflow.python.keras import combinations
|
||||
from tensorflow.python.keras import layers
|
||||
from tensorflow.python.keras import testing_utils
|
||||
from tensorflow.python.keras.engine import input_layer
|
||||
from tensorflow.python.keras.engine import sequential
|
||||
from tensorflow.python.keras.engine import training
|
||||
from tensorflow.python.keras.utils import np_utils
|
||||
from tensorflow.python.platform import test
|
||||
from tensorflow.python.training import adam
|
||||
@ -43,7 +48,7 @@ NUM_HIDDEN = 5
|
||||
BATCH_SIZE = 5
|
||||
|
||||
|
||||
class TestTensorBoardV1(test.TestCase):
|
||||
class TestTensorBoardV1(test.TestCase, parameterized.TestCase):
|
||||
|
||||
def test_TensorBoard(self):
|
||||
np.random.seed(1337)
|
||||
@ -77,13 +82,13 @@ class TestTensorBoardV1(test.TestCase):
|
||||
|
||||
# case: Sequential
|
||||
with ops.Graph().as_default(), self.cached_session():
|
||||
model = keras.models.Sequential()
|
||||
model = sequential.Sequential()
|
||||
model.add(
|
||||
keras.layers.Dense(
|
||||
layers.Dense(
|
||||
NUM_HIDDEN, input_dim=INPUT_DIM, activation='relu'))
|
||||
# non_trainable_weights: moving_variance, moving_mean
|
||||
model.add(keras.layers.BatchNormalization())
|
||||
model.add(keras.layers.Dense(NUM_CLASSES, activation='softmax'))
|
||||
model.add(layers.BatchNormalization())
|
||||
model.add(layers.Dense(NUM_CLASSES, activation='softmax'))
|
||||
model.compile(
|
||||
loss='categorical_crossentropy',
|
||||
optimizer='sgd',
|
||||
@ -184,14 +189,14 @@ class TestTensorBoardV1(test.TestCase):
|
||||
i += 1
|
||||
i %= max_batch_index
|
||||
|
||||
inp1 = keras.Input((INPUT_DIM,))
|
||||
inp2 = keras.Input((INPUT_DIM,))
|
||||
inp = keras.layers.add([inp1, inp2])
|
||||
hidden = keras.layers.Dense(2, activation='relu')(inp)
|
||||
hidden = keras.layers.Dropout(0.1)(hidden)
|
||||
output1 = keras.layers.Dense(NUM_CLASSES, activation='softmax')(hidden)
|
||||
output2 = keras.layers.Dense(NUM_CLASSES, activation='softmax')(hidden)
|
||||
model = keras.models.Model([inp1, inp2], [output1, output2])
|
||||
inp1 = input_layer.Input((INPUT_DIM,))
|
||||
inp2 = input_layer.Input((INPUT_DIM,))
|
||||
inp = layers.add([inp1, inp2])
|
||||
hidden = layers.Dense(2, activation='relu')(inp)
|
||||
hidden = layers.Dropout(0.1)(hidden)
|
||||
output1 = layers.Dense(NUM_CLASSES, activation='softmax')(hidden)
|
||||
output2 = layers.Dense(NUM_CLASSES, activation='softmax')(hidden)
|
||||
model = training.Model([inp1, inp2], [output1, output2])
|
||||
model.compile(loss='categorical_crossentropy',
|
||||
optimizer='sgd',
|
||||
metrics=['accuracy'])
|
||||
@ -271,13 +276,13 @@ class TestTensorBoardV1(test.TestCase):
|
||||
y_train = np_utils.to_categorical(y_train)
|
||||
|
||||
with ops.Graph().as_default(), self.cached_session():
|
||||
model = keras.models.Sequential()
|
||||
model = sequential.Sequential()
|
||||
model.add(
|
||||
keras.layers.Dense(
|
||||
layers.Dense(
|
||||
NUM_HIDDEN, input_dim=INPUT_DIM, activation='relu'))
|
||||
# non_trainable_weights: moving_variance, moving_mean
|
||||
model.add(keras.layers.BatchNormalization())
|
||||
model.add(keras.layers.Dense(NUM_CLASSES, activation='softmax'))
|
||||
model.add(layers.BatchNormalization())
|
||||
model.add(layers.Dense(NUM_CLASSES, activation='softmax'))
|
||||
model.compile(
|
||||
loss='categorical_crossentropy',
|
||||
optimizer='sgd',
|
||||
@ -371,7 +376,7 @@ class TestTensorBoardV1(test.TestCase):
|
||||
loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
||||
|
||||
cbks = [
|
||||
keras.callbacks.ReduceLROnPlateau(
|
||||
callbacks.ReduceLROnPlateau(
|
||||
monitor='val_loss', factor=0.5, patience=4, verbose=1),
|
||||
callbacks_v1.TensorBoard(log_dir=temp_dir)
|
||||
]
|
||||
@ -463,7 +468,7 @@ class TestTensorBoardV1(test.TestCase):
|
||||
self.assertEqual(epoch_step, 0)
|
||||
self.assertEqual(epoch_summary.value[0].simple_value, 10.0)
|
||||
|
||||
@test_util.run_in_graph_and_eager_modes
|
||||
@combinations.generate(combinations.combine(mode=['graph', 'eager']))
|
||||
def test_Tensorboard_eager(self):
|
||||
temp_dir = tempfile.mkdtemp(dir=self.get_temp_dir())
|
||||
self.addCleanup(shutil.rmtree, temp_dir, ignore_errors=True)
|
||||
@ -529,7 +534,7 @@ class TestTensorBoardV1(test.TestCase):
|
||||
tb_cbk.on_batch_end(0, {'acc': 5.0, 'size': 1})
|
||||
self.assertEqual(tb_cbk.writer.batch_summaries, [])
|
||||
tb_cbk.on_epoch_end(0, {'acc': 10.0, 'size': 1})
|
||||
self.assertEqual(len(tb_cbk.writer.epoch_summaries), 1)
|
||||
self.assertLen(tb_cbk.writer.epoch_summaries, 1)
|
||||
tb_cbk.on_train_end()
|
||||
|
||||
# Batch mode
|
||||
@ -537,9 +542,9 @@ class TestTensorBoardV1(test.TestCase):
|
||||
tb_cbk.writer = FileWriterStub(temp_dir)
|
||||
|
||||
tb_cbk.on_batch_end(0, {'acc': 5.0, 'size': 1})
|
||||
self.assertEqual(len(tb_cbk.writer.batch_summaries), 1)
|
||||
self.assertLen(tb_cbk.writer.batch_summaries, 1)
|
||||
tb_cbk.on_batch_end(0, {'acc': 5.0, 'size': 1})
|
||||
self.assertEqual(len(tb_cbk.writer.batch_summaries), 2)
|
||||
self.assertLen(tb_cbk.writer.batch_summaries, 2)
|
||||
self.assertFalse(tb_cbk.writer.epoch_summaries)
|
||||
tb_cbk.on_train_end()
|
||||
|
||||
@ -550,13 +555,13 @@ class TestTensorBoardV1(test.TestCase):
|
||||
tb_cbk.on_batch_end(0, {'acc': 5.0, 'size': 10})
|
||||
self.assertFalse(tb_cbk.writer.batch_summaries)
|
||||
tb_cbk.on_batch_end(0, {'acc': 5.0, 'size': 10})
|
||||
self.assertEqual(len(tb_cbk.writer.batch_summaries), 1)
|
||||
self.assertLen(tb_cbk.writer.batch_summaries, 1)
|
||||
tb_cbk.on_batch_end(0, {'acc': 5.0, 'size': 10})
|
||||
self.assertEqual(len(tb_cbk.writer.batch_summaries), 1)
|
||||
self.assertLen(tb_cbk.writer.batch_summaries, 1)
|
||||
tb_cbk.on_batch_end(0, {'acc': 5.0, 'size': 10})
|
||||
self.assertEqual(len(tb_cbk.writer.batch_summaries), 2)
|
||||
self.assertLen(tb_cbk.writer.batch_summaries, 2)
|
||||
tb_cbk.on_batch_end(0, {'acc': 10.0, 'size': 10})
|
||||
self.assertEqual(len(tb_cbk.writer.batch_summaries), 2)
|
||||
self.assertLen(tb_cbk.writer.batch_summaries, 2)
|
||||
self.assertFalse(tb_cbk.writer.epoch_summaries)
|
||||
tb_cbk.on_train_end()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user