-
Notifications
You must be signed in to change notification settings - Fork 617
Closed
Labels
Description
System information
- OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 18.04
- TensorFlow version and how it was installed (source or binary): docker tensorflow
- TensorFlow-Addons version and how it was installed (source or binary): binary
- Is GPU used? (yes/no):
Describe the bug
Documentation of MultiOptimizer explains that list of layers can be used but it results in an error.
| layers and models will be automatically discovered. Alternatively, in place of a single layer, you can pass |
| opt_layer_pairs = [(opt1, model.layers[0]), (opt2, model.layers[1:])] |
Code to reproduce the issue
import tensorflow as tf
import tensorflow_addons as tfa
import numpy as np
model = tf.keras.Sequential(
[tf.keras.Input(shape=[1]), tf.keras.layers.Dense(1), tf.keras.layers.Dense(1), tf.keras.layers.Dense(1)]
)
x = np.array(np.ones([100]))
y = np.array(np.ones([100]))
weights_before_train = (
model.layers[0].weights[0].numpy(),
model.layers[1].weights[0].numpy(),
)
opt1 = tf.keras.optimizers.Adam(learning_rate=1e-3)
opt2 = tf.keras.optimizers.SGD(learning_rate=0)
opt_layer_pairs = [(opt1, model.layers[0]), (opt2, model.layers[1:])]
loss = tf.keras.losses.MSE
optimizer = tfa.optimizers.MultiOptimizer(opt_layer_pairs)
model.compile(optimizer=optimizer, loss=loss)Error produced
Traceback (most recent call last):
File "test_multi_optimizer.py", line 24, in <module>
optimizer = tfa.optimizers.MultiOptimizer(opt_layer_pairs)
File "/usr/local/lib/python3.6/dist-packages/typeguard/__init__.py", line 840, in wrapper
retval = func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/tensorflow_addons/optimizers/discriminative_layer_training.py", line 92, in __init__
for opt, layer in optimizers_and_layers
File "/usr/local/lib/python3.6/dist-packages/tensorflow_addons/optimizers/discriminative_layer_training.py", line 92, in <listcomp>
for opt, layer in optimizers_and_layers
File "/usr/local/lib/python3.6/dist-packages/tensorflow_addons/optimizers/discriminative_layer_training.py", line 142, in create_optimizer_spec
), "Object passed is not an instance of tf.keras.layers.Layer nor tf.keras.Model"
AssertionError: Object passed is not an instance of tf.keras.layers.Layer nor tf.keras.Model