| # Copyright 2021 The IREE Authors | |
| # | |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. | |
| # See https://llvm.org/LICENSE.txt for license information. | |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| # Generates runner variants for the tf math tests. | |
| import generate_runner | |
| # These layers were selected by: | |
| # 1. Getting all subclasses of `tf.keras.layers.Layer` | |
| # 2. Removing deperacated layers based on the tf.keras docs | |
| # 3. Removing irrelevant layers | |
| # 4. Removing layers that don't fit in the testing framework (Wrappers, DenseFeatures, ...) | |
| LAYERS = [ | |
| "Activation", | |
| "ActivityRegularization", | |
| "Add", | |
| "AdditiveAttention", | |
| "AlphaDropout", | |
| "Attention", | |
| "Average", | |
| "AveragePooling1D", | |
| "AveragePooling2D", | |
| "AveragePooling3D", | |
| "BatchNormalization", | |
| "Concatenate", | |
| "Conv1D", | |
| "Conv1DTranspose", | |
| "Conv2D", | |
| "Conv2DTranspose", | |
| "Conv3D", | |
| "Conv3DTranspose", | |
| # "ConvLSTM2D", # TODO(meadowlark): Debug flakiness. | |
| "Cropping1D", | |
| "Cropping2D", | |
| "Cropping3D", | |
| "Dense", | |
| "DepthwiseConv2D", | |
| "Dot", | |
| "Dropout", | |
| "ELU", | |
| "Embedding", | |
| "Flatten", | |
| "GRU", | |
| "GaussianDropout", | |
| "GaussianNoise", | |
| "GlobalAveragePooling1D", | |
| "GlobalAveragePooling2D", | |
| "GlobalAveragePooling3D", | |
| "GlobalMaxPool1D", | |
| "GlobalMaxPool2D", | |
| "GlobalMaxPool3D", | |
| "InputLayer", | |
| "LSTM", | |
| "Lambda", | |
| "LayerNormalization", | |
| "LeakyReLU", | |
| "LocallyConnected1D", | |
| "LocallyConnected2D", | |
| "Masking", | |
| "MaxPool1D", | |
| "MaxPool2D", | |
| "MaxPool3D", | |
| "Maximum", | |
| "Minimum", | |
| "MultiHeadAttention", | |
| "Multiply", | |
| "PReLU", | |
| "Permute", | |
| "ReLU", | |
| "RepeatVector", | |
| "Reshape", | |
| "SeparableConv1D", | |
| "SeparableConv2D", | |
| # "SimpleRNN", # TODO(meadowlark): Debug flakiness. | |
| "Softmax", | |
| "SpatialDropout1D", | |
| "SpatialDropout2D", | |
| "SpatialDropout3D", | |
| "Subtract", | |
| "ThresholdedReLU", | |
| "UpSampling1D", | |
| "UpSampling2D", | |
| "UpSampling3D", | |
| "ZeroPadding1D", | |
| "ZeroPadding2D", | |
| "ZeroPadding3D", | |
| ] | |
| # A list of all layers with non-default api tests can be generated by running: | |
| # bazel run integrations/tensorflow/e2e/keras/layers:layers_test_manual -- \ | |
| # --list_layers_with_full_api_tests | |
| LAYERS_WITH_FULL_API_TESTS = [ | |
| "ActivityRegularization", | |
| "AdditiveAttention", | |
| "Attention", | |
| "AveragePooling1D", | |
| "AveragePooling2D", | |
| "AveragePooling3D", | |
| "BatchNormalization", | |
| "Concatenate", | |
| "Conv1D", | |
| "Conv1DTranspose", | |
| "Conv2D", | |
| "Conv2DTranspose", | |
| "Conv3D", | |
| "Conv3DTranspose", | |
| # "ConvLSTM2D", # TODO(meadowlark): Debug flakiness. | |
| "Cropping1D", | |
| "Cropping2D", | |
| "Cropping3D", | |
| "DepthwiseConv2D", | |
| "GRU", | |
| "LSTM", | |
| "LocallyConnected1D", | |
| "LocallyConnected2D", | |
| "MaxPool1D", | |
| "MaxPool2D", | |
| "MaxPool3D", | |
| "SeparableConv1D", | |
| "SeparableConv2D", | |
| "SimpleRNN", | |
| # "SimpleRNN", # TODO(meadowlark): Debug flakiness. | |
| ] | |
| # Layers that mention a training kwarg in their doc. | |
| LAYERS_WITH_TRAINING_BEHAVIOR = [ | |
| "AdditiveAttention", | |
| "AlphaDropout", | |
| "Attention", | |
| "BatchNormalization", | |
| # "ConvLSTM2D", # TODO(meadowlark): Debug flakiness. | |
| "Dropout", | |
| "GRU", | |
| "GaussianDropout", | |
| "GaussianNoise", | |
| "LSTM", | |
| "MultiHeadAttention", | |
| # "SimpleRNN", # TODO(meadowlark): Debug flakiness. | |
| "SpatialDropout1D", | |
| "SpatialDropout2D", | |
| "SpatialDropout3D", | |
| ] | |
| BACKENDS = [ | |
| ("llvmcpu", "--target_backends=iree_llvmcpu"), | |
| ("vulkan", "--target_backends=iree_vulkan"), | |
| ] | |
| # Non dynamic dim tests. | |
| for variant, flags in BACKENDS: | |
| for layer in LAYERS: | |
| # Static. | |
| generate_runner.main([ | |
| variant, | |
| (f"{flags} --dynamic_dims=false --training=false " | |
| f"--test_default_kwargs_only=true --layer={layer} --artifacts_dir=%t"), | |
| f"iree_tf_tests/layers/layers_test.py:{layer}" | |
| ]) | |
| # Dynamic. | |
| generate_runner.main([ | |
| variant, | |
| (f"{flags} --dynamic_dims=true --training=false " | |
| f"--test_default_kwargs_only=true --layer={layer} --artifacts_dir=%t"), | |
| f"iree_tf_tests/layers/layers_test.py:dynamic_dims_{layer}" | |
| ]) | |
| # Test with test_default_kwargs_only=false | |
| for layer in LAYERS_WITH_FULL_API_TESTS: | |
| generate_runner.main([ | |
| variant, | |
| (f"{flags} --dynamic_dims=false --training=false " | |
| f"--test_default_kwargs_only=false --layer={layer} --artifacts_dir=%t" | |
| ), f"iree_tf_tests/layers/layers_test.py:full_api_{layer}" | |
| ]) | |
| # Test with training flags. | |
| for layer in LAYERS_WITH_TRAINING_BEHAVIOR: | |
| generate_runner.main([ | |
| variant, | |
| (f"{flags} --dynamic_dims=false --training=true " | |
| f"--test_default_kwargs_only=true --layer={layer} --artifacts_dir=%t"), | |
| f"iree_tf_tests/layers/layers_test.py:training_{layer}" | |
| ]) |