微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解决自定义 Tensorflow 损失函数中的编译错误

如何解决解决自定义 Tensorflow 损失函数中的编译错误

我正在尝试为 tensorflow 创建一个包含领域知识的损失函数,但遇到了与函数在 tensorflow 中编译和运行的环境相关的问题。我正在寻找解释或文档以了解在损失函数范围内可以做什么。我使用的是 2.4.1 版本的 tensorflow。

现在,尝试提取张量维度不起作用,并引发以下编译错误

AttributeError: 'Tensor' 对象没有属性 'as_list'

我还看到了以下内容: AttributeError: 'Tensor' 对象没有属性 'numpy' AttributeError: 'Tensor' 对象没有属性 'make_ndarray'

如果我可以调试代码会有所帮助,但我还没有看到有关调试编译或获取错误行号的答案,这些错误使整个过程变得脆弱且容易出错。

def domain_specific_loss_function( y_actual,y_predicted ):
        shape_tensor = tf.shape( y_actual ).as_list()
        batch_size = shape_tensor[0]
        dimension_count = shape_tensor[1]
        error_list = []
        for i in range(0,batch_size):
                error_list.append( 0.0 )
        for i in range( 0,batch_size ):
                is_peak = []
                for j in range(0,dimension_count):
                        is_peak.append( False )
                for j in range( 1,dimension_count -1 ):
                        yr_actual = y_actual[i]
                        if ((yr_actual[ j - 1 ] < yr_actual[ j ]) and (yr_actual[ j ] > yr_actual[ j + 1 ])):
                                is_peak[ j ] = True
                for j in range( 0,dimension_count ):
                        yr_actual = y_actual[i]
                        yr_predicted = y_predicted[i]
                        if (yr_actual[ j ] < yr_actual[ j ]):
                                if (not is_peak[ j ]):
                                        error_list[ j ] = 2*(yr_predicted[ j ] - yr_actual[ j ])
                                else:
                                        error_list[ j ] = yr_predicted[ j ] - yr_actual[ j ];
                        else:
                                if (not is_peak[ i ]):
                                        error_list[ j ] = 2*(yr_actual[ j ] - yr_predicted[ j ])
                                else:
                                        error_list[ j ] = yr_actual[ j ] - yr_predicted[ j ];
        return error_list

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。