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

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

我正在尝试开始使用神经结构化学习,但是当我 运行 页面上给出的示例进行测试时,出现以下错误

我尝试压缩维度,我尝试了不同版本的 tensorflow --- 我对 tensorflow 还是很陌生,所以在这一点上我真的是在猜测。

# 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}}]]

该模型应该进行训练,我从中获得了一些准确性。我不明白问题出在我的代码中。

我运行在 Google Colab with Tensorflow v1.14.0

虽然没有在任何要求中明确提及,但在all three (so far) tutorials中,第一步是安装Tensorflow 2.0:

通过升级到 Tensorflow 2.0

,在相关 blog post, which was resolved 中也报告了与您相同的错误

因此,创建一个安装 TF 2.0 和软件包的环境:

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

你应该没事的。