BERT 分类器# ValueError:没有为任何变量提供梯度:

时间:2021-02-23 04:58:32

标签: tensorflow deep-learning nlp bert-language-model

我尝试在包含cleaned_description 列和目标变量的数据集上训练BERT 分类器。 当我尝试拟合模型时,出现错误“ValueError:没有为任何变量提供梯度:”。

enter image description here

参考资料:https://www.tensorflow.org/tutorials/text/classify_text_with_bert

我已使用

将列值转换为张量
description_preprocessed = tf.convert_to_tensor(dataset['cleaned_Description'])



import tensorflow_text

def build_model():
    
    text_input = tf.keras.layers.Input(shape=(), dtype=tf.string)
    
    preprocessor = hub.KerasLayer(
        "https://tfhub.dev/tensorflow/bert_en_uncased_preprocess/3")
    encoder_inputs = preprocessor(text_input)
    
    encoder = hub.KerasLayer(
    "https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-12_H-256_A-4/1",
    trainable=True)
    outputs = encoder(encoder_inputs)    
    
    pooled_output = outputs["pooled_output"]      # [batch_size, 256].
    #sequence_output = bert_model["sequence_output"]  # [batch_size, seq_length, 256].
    
    net = tf.keras.layers.Dropout(0.1)(pooled_output)
    net = tf.keras.layers.Dense(1, activation='sigmoid', name='classifier')(net)
    
    return tf.keras.Model(text_input, net)



classifier_model = build_model()


classifier_model.compile(optimizer = 'adam', 
                        loss = tf.keras.losses.BinaryCrossentropy(),
                        metrics = tf.metrics.BinaryAccuracy()
                        )

history = classifier_model.fit(description_preprocessed, validation_split=0.2, epochs=10)

我收到一条错误消息

ValueError: in user code:

    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:806 train_function  *
        return step_function(self, iterator)
    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:796 step_function  **
        outputs = model.distribute_strategy.run(run_step, args=(data,))
    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:1211 run
        return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2585 call_for_each_replica
        return self._call_for_each_replica(fn, args, kwargs)
    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/distribute/distribute_lib.py:2945 _call_for_each_replica
        return fn(*args, **kwargs)
    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:789 run_step  **
        outputs = model.train_step(data)
    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:756 train_step
        _minimize(self.distribute_strategy, tape, self.optimizer, loss,
    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py:2736 _minimize
        gradients = optimizer._aggregate_gradients(zip(gradients,  # pylint: disable=protected-access
    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py:562 _aggregate_gradients
        filtered_grads_and_vars = _filter_grads(grads_and_vars)
    /home/abhiram/anaconda3/envs/gpus/lib/python3.8/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py:1270 _filter_grads
        raise ValueError("No gradients provided for any variable: %s." %

    ValueError: No gradients provided for any variable: ['word_embeddings/embeddings:0', 'position_embedding/embeddings:0', 'type_embeddings/embeddings:0', 'embeddings/layer_norm/gamma:0', 'embeddings/layer_norm/beta:0', 'transformer/layer_0/self_attention/query/kernel:0', 'transformer/layer_0/self_attention/query/bias:0',

0 个答案:

没有答案