InvalidArgumentError: Cannot update variable with shape [] using a Tensor with shape [32]

2k Views Asked by At

I am trying to get started with Neural Structured Learning but when I run the example given on the page to test, I get the following error

I have tried to squeeze the dimensions, I have tried a different version of tensorflow --- I am still quite new to tensorflow so at this point I would really be guessing.

# Create a base model -- sequential, functional, or subclass.
model = tf.keras.Sequential([
    tf.keras.Input((28, 28), name='feature'),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation=tf.nn.relu),
    tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])

# Wrap the model with adversarial regularization.
adv_config = nsl.configs.make_adv_reg_config(multiplier=0.2, adv_step_size=0.05)
adv_model = nsl.keras.AdversarialRegularization(model, adv_config=adv_config)


# Compile, train, and evaluate.
adv_model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])


#let us now fit the model
adv_model.fit({'feature': x_train, 'label': y_train}, batch_size=32, epochs=5)



W0906 13:48:30.427690 140388427564928 training_utils.py:1101] Output output_1 missing from loss dictionary. We assume this was done on purpose. The fit and evaluate APIs will not be expecting any data to be passed to output_1.
Epoch 1/5
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-21-a5b951c24c49> in <module>()
----> 1 adv_model.fit({'feature': x_train, 'label': y_train}, batch_size=32, epochs=5)

3 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/client/session.py in __call__(self, *args, **kwargs)
   1456         ret = tf_session.TF_SessionRunCallable(self._session._session,
   1457                                                self._handle, args,
-> 1458                                                run_metadata_ptr)
   1459         if run_metadata:
   1460           proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

InvalidArgumentError: Cannot update variable with shape [] using a Tensor with shape [32], shapes must be equal.
     [[{{node AdversarialRegularization_1/AssignAddVariableOp_2}}]]

The model is supposed to train and I get some accuracy from it. I don't understand where the problem is from in my code.

I am running this on Google Colab with Tensorflow v1.14.0

1

There are 1 best solutions below

0
On BEST ANSWER

Although not mentioned explicitly in any requirements, in all three (so far) tutorials, the first step is to install Tensorflow 2.0:

enter image description here

There is also a report of an error identical to yours in the relevant blog post, which was resolved by upgrading to Tensorflow 2.0

So, make an environment where you install TF 2.0 and the package:

pip install --quiet tensorflow==2.0.0-rc0
pip install --quiet neural-structured-learning

and you should be fine.