在tensorflow2.0中没有为任何变量提供梯度

周旭鲲

当我尝试tensorflow2.0根据发行的官方指南创建变压器时遇到了一个问题TensorFlow,当我添加一个完整的连接网络时,分类损失和平移损失似乎都是某些变量的梯度。

但是,一旦我尝试将两个损失相加,所有变量的梯度就会消失。我不知道,我尝试了数周来解决这个问题。有人可以给我一些建议吗?

@tf.function(input_signature=train_step_signature)
def train_step(group, inp, tar, label):
    tar_inp = tar[:, :-1]
    tar_real = tar[:, 1:]  # sess=tf.compat.v1.Session()
    enc_padding_mask, combined_mask, dec_padding_mask = create_masks(inp, tar_inp)
    with tf.GradientTape(persistent=True) as tape:
        classfication, predictions, _ = transformer(inp, tar_inp,
                                                    True,
                                                    enc_padding_mask,
                                                    combined_mask,
                                                    dec_padding_mask)
        loss = loss_function(tar_real, predictions)
        loss2 = tf.nn.softmax_cross_entropy_with_logits(label, classfication)

    #print(loss,loss2)
    a=tape.gradient(loss,trainsformer.trainable_variable)
    gradients = tape.gradient(loss+loss2, transformer.trainable_variables)

    optimizer.apply_gradients(zip(gradients, transformer.trainable_variables))
    class_loss(loss2)
    train_loss(loss)
    train_accuracy(tar_real, predictions)

以下是我的错误信息

    ValueError                                Traceback (most recent call last)
<ipython-input-2-81054f0385cb> in <module>()
    999     # inp -> portuguese, tar -> english
   1000     for (batch, (group, inp, tar, label)) in enumerate(train_dataset):
-> 1001         train_step(group, inp, tar, label)
   1002         if batch % 50 == 0:
   1003             print(

8 frames
/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/def_function.py in __call__(self, *args, **kwds)
    455 
    456     tracing_count = self._get_tracing_count()
--> 457     result = self._call(*args, **kwds)
    458     if tracing_count == self._get_tracing_count():
    459       self._call_counter.called_without_tracing()

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/def_function.py in _call(self, *args, **kwds)
    501       # This is the first call of __call__, so we have to initialize.
    502       initializer_map = object_identity.ObjectIdentityDictionary()
--> 503       self._initialize(args, kwds, add_initializers_to=initializer_map)
    504     finally:
    505       # At this point we know that the initialization is complete (or less

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/def_function.py in _initialize(self, args, kwds, add_initializers_to)
    406     self._concrete_stateful_fn = (
    407         self._stateful_fn._get_concrete_function_internal_garbage_collected(  # pylint: disable=protected-access
--> 408             *args, **kwds))
    409 
    410     def invalid_creator_scope(*unused_args, **unused_kwds):

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py in _get_concrete_function_internal_garbage_collected(self, *args, **kwargs)
   1846     if self.input_signature:
   1847       args, kwargs = None, None
-> 1848     graph_function, _, _ = self._maybe_define_function(args, kwargs)
   1849     return graph_function
   1850 

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py in _maybe_define_function(self, args, kwargs)
   2148         graph_function = self._function_cache.primary.get(cache_key, None)
   2149         if graph_function is None:
-> 2150           graph_function = self._create_graph_function(args, kwargs)
   2151           self._function_cache.primary[cache_key] = graph_function
   2152         return graph_function, args, kwargs

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/function.py in _create_graph_function(self, args, kwargs, override_flat_arg_shapes)
   2039             arg_names=arg_names,
   2040             override_flat_arg_shapes=override_flat_arg_shapes,
-> 2041             capture_by_value=self._capture_by_value),
   2042         self._function_attributes,
   2043         # Tell the ConcreteFunction to clean up its graph once it goes out of

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/func_graph.py in func_graph_from_py_func(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes)
    913                                           converted_func)
    914 
--> 915       func_outputs = python_func(*func_args, **func_kwargs)
    916 
    917       # invariant: `func_outputs` contains only Tensors, CompositeTensors,

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/eager/def_function.py in wrapped_fn(*args, **kwds)
    356         # __wrapped__ allows AutoGraph to swap in a converted function. We give
    357         # the function a weak reference to itself to avoid a reference cycle.
--> 358         return weak_wrapped_fn().__wrapped__(*args, **kwds)
    359     weak_wrapped_fn = weakref.ref(wrapped_fn)
    360 

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/framework/func_graph.py in wrapper(*args, **kwargs)
    903           except Exception as e:  # pylint:disable=broad-except
    904             if hasattr(e, "ag_error_metadata"):
--> 905               raise e.ag_error_metadata.to_exception(e)
    906             else:
    907               raise

ValueError: in converted code:

    <ipython-input-1-81054f0385cb>:856 train_step  *
        optimizer.apply_gradients(zip(gradients, transformer.trainable_variables))
    /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/optimizer_v2/optimizer_v2.py:427 apply_gradients
        grads_and_vars = _filter_grads(grads_and_vars)
    /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/optimizer_v2/optimizer_v2.py:1025 _filter_grads
        ([v.name for _, v in grads_and_vars],))

    ValueError: No gradients provided for any variable: ['transformer_1/encoder_1/embedding_2/embeddings:0', 'transformer_1/encoder_1/encoder_layer_6/multi_head_attention_18/dense_98/kernel:0', 'transformer_1/encoder_1/encoder_layer_6/multi_head_attention_18/dense_98/bias:0', 'transformer_1/encoder_1/encoder_layer_6/multi_head_attention_18/dense_99/kernel:0', 'transformer_1/encoder_1/encoder_layer_6/multi_head_attention_18/dense_99/bias:0', 'transformer_1/encoder_1/encoder_layer_6/multi_head_attention_18/dense_100/kernel:0', 'transformer_1/encoder_1/encoder_layer_6/multi_head_attention_18/dense_100/bias:0', 'transformer_1/encoder_1/encoder_layer_6/multi_head_attention_18/dense_101/kernel:0', 'transformer_1/encoder_1/encoder_layer_6/multi_head_attention_18/dense_101/bias:0', 'transformer_1/encoder_1/encoder_layer_6/sequential_12/dense_102/kernel:0', 'transformer_1/encoder_1/encoder_layer_6/sequential_12/dense_102/bias:0', 'transformer_1/encoder_1/encoder_layer_6/sequential_12/dense_103/kernel:0', 'transformer_1/encoder_1/encoder_layer_6/sequential_12/dense_103/bias:0', 'transformer_1/encoder_1/encoder_layer_6/layer_normalization_30/gamma:0', 'transformer_1/encoder_1/encoder_layer_6/layer_normalization_30/beta:0', 'transformer_1/encoder_1/encoder_layer_6/layer_normalization_31/gamma:0', 'transformer_1/encoder_1/encoder_layer_6/layer_normalization_31/beta:0', 'transformer_1/encoder_1/encoder_layer_7/multi_head_attention_19/dense_104/kernel:0', 'transformer_1/encoder_1/encoder...
x乘0

是的,这有点令人讨厌GradientTape您无法对磁带上下文(之外的张量执行任何操作with...否则磁带将“丢失轨道”。您可以通过简单地将添加项移至上下文中来对其进行修复:

with tf.GradientTape(persistent=True) as tape:
    classfication, predictions, _ = transformer(inp, tar_inp,
                                                True,
                                                enc_padding_mask,
                                                combined_mask,
                                                dec_padding_mask)
    loss = loss_function(tar_real, predictions)
    loss2 = tf.nn.softmax_cross_entropy_with_logits(label, classfication)
    added_loss = loss + loss2

#print(loss,loss2)
a=tape.gradient(loss,trainsformer.trainable_variable)
gradients = tape.gradient(added_loss, transformer.trainable_variables)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Tensorflow:没有为任何变量提供梯度

来自分类Dev

ValueError:没有为任何变量提供渐变(Tensorflow)

来自分类Dev

TensorFlow 2自定义丢失:“没有为任何变量提供渐变”错误

来自分类Dev

ValueError:没有为任何变量提供渐变-Tensorflow 2.0 / Keras

来自分类Dev

ValueError:没有为任何变量提供梯度,检查你的图表是否支持梯度

来自分类Dev

如何在具有tensorflow2和keras的多GPU上训练模型?

来自分类Dev

tf.nn.ctc_beam_search_decoder()不支持TensorFlow2中的GPU吗?

来自分类Dev

如何仅在Tensorflow2中保存张量而不是模型

来自分类Dev

如何在tensorflow2中制作这样的数据集:<PrefetchDataset形状:((),()),类型:(tf.string,tf.string)>

来自分类Dev

当 MultivariateNormalDiag() 的 scale_diag 是一个常量时,“ValueError:没有为任何变量提供梯度”

来自分类Dev

Keras ValueError:没有为任何变量提供渐变

来自分类Dev

没有为任何变量提供渐变-Keras

来自分类Dev

我为什么得到“ ValueError:没有为任何变量提供渐变:['Variable:0']。” 错误?

来自分类Dev

使用@tffunction的Tensorflow2警告

来自分类Dev

IOError:[错误2]没有为ouptup文件提供此类文件或目录错误

来自分类Dev

Angular 2 RC3“没有为RouterOutletMap提供程序!” 错误

来自分类Dev

grep没有为传递给变量的目录提供任何输出

来自分类Dev

keras tensorflow2获得训练数据的结果

来自分类Dev

Tensorflow2关于形状不匹配的警告,仍在培训

来自分类Dev

TensorFlow2替代tf.io.gfile.Open()?

来自分类Dev

TensorFlow2继续安装相同版本

来自分类Dev

HK2没有为球衣注入HttpServletRequest

来自分类Dev

Python,Tensorflow ValueError:未为任何变量提供渐变

来自分类Dev

Tensorflow2 LSTM(cuDNN args)与tensorflow1 CuDNNLSTM实现差异

来自分类Dev

pytorch-没有为参数计算梯度

来自分类Dev

ValueError:没有为任何可变自定义损失提供渐变

来自分类Dev

reprepro没有为“ galera”提供任何内容,正在跳过

来自分类Dev

ocamlfind抱怨没有为通过opam安装的模块提供任何实现

来自分类Dev

CXF wsdl2java没有为成员生成Javadoc

Related 相关文章

  1. 1

    Tensorflow:没有为任何变量提供梯度

  2. 2

    ValueError:没有为任何变量提供渐变(Tensorflow)

  3. 3

    TensorFlow 2自定义丢失:“没有为任何变量提供渐变”错误

  4. 4

    ValueError:没有为任何变量提供渐变-Tensorflow 2.0 / Keras

  5. 5

    ValueError:没有为任何变量提供梯度,检查你的图表是否支持梯度

  6. 6

    如何在具有tensorflow2和keras的多GPU上训练模型?

  7. 7

    tf.nn.ctc_beam_search_decoder()不支持TensorFlow2中的GPU吗?

  8. 8

    如何仅在Tensorflow2中保存张量而不是模型

  9. 9

    如何在tensorflow2中制作这样的数据集:<PrefetchDataset形状:((),()),类型:(tf.string,tf.string)>

  10. 10

    当 MultivariateNormalDiag() 的 scale_diag 是一个常量时,“ValueError:没有为任何变量提供梯度”

  11. 11

    Keras ValueError:没有为任何变量提供渐变

  12. 12

    没有为任何变量提供渐变-Keras

  13. 13

    我为什么得到“ ValueError:没有为任何变量提供渐变:['Variable:0']。” 错误?

  14. 14

    使用@tffunction的Tensorflow2警告

  15. 15

    IOError:[错误2]没有为ouptup文件提供此类文件或目录错误

  16. 16

    Angular 2 RC3“没有为RouterOutletMap提供程序!” 错误

  17. 17

    grep没有为传递给变量的目录提供任何输出

  18. 18

    keras tensorflow2获得训练数据的结果

  19. 19

    Tensorflow2关于形状不匹配的警告,仍在培训

  20. 20

    TensorFlow2替代tf.io.gfile.Open()?

  21. 21

    TensorFlow2继续安装相同版本

  22. 22

    HK2没有为球衣注入HttpServletRequest

  23. 23

    Python,Tensorflow ValueError:未为任何变量提供渐变

  24. 24

    Tensorflow2 LSTM(cuDNN args)与tensorflow1 CuDNNLSTM实现差异

  25. 25

    pytorch-没有为参数计算梯度

  26. 26

    ValueError:没有为任何可变自定义损失提供渐变

  27. 27

    reprepro没有为“ galera”提供任何内容,正在跳过

  28. 28

    ocamlfind抱怨没有为通过opam安装的模块提供任何实现

  29. 29

    CXF wsdl2java没有为成员生成Javadoc

热门标签

归档