• 解决tensorflow中使用SincNet报错问题


    报错信息

    File ~/apps/miniconda3/envs/oscar_py39_tf28/lib/python3.9/site-packages/keras/utils/traceback_utils.py:67, in filter_traceback.<locals>.error_handler(*args, **kwargs)
         65 except Exception as e:  # pylint: disable=broad-except
         66   filtered_tb = _process_traceback_frames(e.__traceback__)
    ---> 67   raise e.with_traceback(filtered_tb) from None
         68 finally:
         69   del filtered_tb
    
    File ~/apps/miniconda3/envs/oscar_py39_tf28/lib/python3.9/site-packages/tensorflow/python/framework/func_graph.py:1147, in func_graph_from_py_func.<locals>.autograph_handler(*args, **kwargs)
       1145 except Exception as e:  # pylint:disable=broad-except
       1146   if hasattr(e, "ag_error_metadata"):
    -> 1147     raise e.ag_error_metadata.to_exception(e)
       1148   else:
       1149     raise
    
    ValueError: in user code:
    
    
        ValueError: A tf.Variable created inside your tf.function has been garbage-collected. Your code needs to keep Python references to variables created inside `tf.function`s.
        
        A common way to raise this error is to create and return a variable only referenced inside your function:
        
        @tf.function
        def f():
          v = tf.Variable(1.0)
          return v
        
        v = f()  # Crashes with this error message!
        
        The reason this crashes is that @tf.function annotated function returns a **`tf.Tensor`** with the **value** of the variable when the function is called rather than the variable instance itself. As such there is no code holding a reference to the `v` created inside the function and Python garbage collects it.
        
        The simplest way to fix this issue is to create variables outside the function and capture them:
        
        v = tf.Variable(1.0)
        
        @tf.function
        def f():
          return v
        
        f()  # <tf.Tensor: numpy=1.>
        v.assign_add(1.)
        f()  # <tf.Tensor: numpy=2.>
    

      

    解决办法参考

    https://stackoverflow.com/questions/66100195/a-tf-variable-created-inside-my-tf-function-has-been-garbage-collected/72285425#72285425

    把导包路径换一下,就解决了我的问题
    
    我原来的导包路径
    from keras.layers import Layer, InputSpec
    改成
    from tensorflow.python.keras.engine.base_layer import Layer, InputSpec
    

      

  • 相关阅读:
    python实现从文件夹随机拷贝出指定数量文件到目标文件夹
    keras训练函数fit和fit_generator对比,图像生成器ImageDataGenerator数据增强
    Tensorflow与Keras自适应使用显存
    python创建DataFrame,并实现DataFrame的转置
    git push和pull如何解决冲突!!!精品
    lsomap降维
    python变量拷贝
    TSNE-图像二分类可视化
    用清华源安装模块
    HDU多校Round 8
  • 原文地址:https://www.cnblogs.com/chen55555/p/16285208.html
Copyright © 2020-2023  润新知