我尝试在包含cleaned_description 列和目标变量的数据集上训练BERT 分类器。 当我尝试拟合模型时,出现错误“ValueError:没有为任何变量提供梯度:”。
参考资料: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',