当前位置: 首页 > 知识库问答 >
问题:

不能将一个符号张量(up_sampling2d_4_target: 0)转换为一个Numpy数组

孔睿
2023-03-14

不能将符号张量(up_sampling2d_4_target: 0)转换为Numpy数组。

得到以下错误

import keras.backend as K
from keras.optimizers import Adam
from keras.losses import binary_crossentropy

## intersection over union
def IoU(y_true, y_pred, eps=1e-6):
    if np.max(y_true) == 0.0:
        return IoU(1-y_true, 1-y_pred) ## empty image; calc IoU of zeros
    intersection = K.sum(y_true * y_pred, axis=[1,2,3])
    union = K.sum(y_true, axis=[1,2,3]) + K.sum(y_pred, axis=[1,2,3]) - intersection
    return -K.mean( (intersecthtml" target="_blank">html" target="_blank">ion + eps) / (union + eps), axis=0)

--------------------------------------------------------------------------- 没有实现错误跟踪(最近的调用最后)在14 15而True:---

在适合()1 def适合(): ----

~/venv/lib/python3。7/站点包/tensorflow_core/python/training/tracking/base。py in_方法_包装(self,*args,**kwargs)455 self_self_setattr_tracking=False#pylint:disable=protected access 456 try:--

~/venv/lib/python3。7/站点包/tensorflow_core/python/keras/engine/training。py in compile(self、optimizer、loss、metrics、loss\u weights、sample\u weight\u mode、weighted\u metrics、target\u tensors、distribute、**kwargs)371 372创建模型损失和加权指标子图--

~/venv/lib/python3。7/站点包/tensorflow_core/python/training/tracking/base。py in_方法_包装(self,*args,**kwargs)455 self_self_setattr_tracking=False#pylint:disable=protected access 456 try:--

~/venv/lib/python3.7/site包/tensorflow_core/python/keras/Engine/training.py_compile_weights_loss_and_weighted_metrics(sample_weights)
1651#loss_weight_2*output_2_loss_fn(...)1652#层损失。-

~/venv/lib/python3。7/站点包/tensorflow_core/python/keras/engine/training。如果hasattr(损失“减少”),则准备总损失(自身、面罩)1711 1712中的py:-

~/venv/lib/python3。7/现场包/tensorflow_core/python/keras/Loss。调用中的py(self,y_true,y_pred)219 y_pred,y_true=tf_loss_util。挤压或展开尺寸(220 y_pred,y_true)--

在IoU(y_true,y_pred,eps)5#与union 6 def IoU的交点(y_true,y_pred,eps=1e-6)中:----

~/venv/lib/python3。7/站点包/numpy/core/fromnumeric。py in amax(a,轴,out,keepdims,initial,where)2619''2620
返回最大值“max”,轴,无,out-

~/venv/lib/python3。7/站点包/numpy/core/fromnumeric。py输入/输出(obj,ufunc,方法,轴,数据类型,输出,**kwargs)88返回减少(轴=轴,输出=输出,**passkwargs)89---

~/venv/lib/python3。7/站点包/tensorflow_core/python/framework/ops。数组中的py(self)734 def数组(self):735 raise NotImplementedError(“无法将符号张量({})转换为numpy”--

NotImplementedError:无法将符号张量(up_sampling2d_4_目标:0)转换为numpy

大堆

共有1个答案

田向荣
2023-03-14

不能将numpy与tensorflowTensor一起使用,它们是两个不同的东西。

问题在于:

if np.max(y_true) == 0.0:
    return IoU(1-y_true, 1-y_pred) ## empty image; calc IoU of zeros

你需要这些行代替:

is_zero = K.equal(y_true, 0)
y_true = K.switch(is_zero, 1-y_true, y_true)
y_pred = K.switch(is_zero, 1-y_pred, y_pred)
 类似资料:
  • 我尝试将2个损失函数传递给模型,因为Keras允许这样做。 损失:字符串(目标函数的名称)或目标函数或损失实例。见损失。如果模型有多个输出,您可以通过传递字典或损失列表对每个输出使用不同的损失。该模型将使损失值最小化,然后将是所有单个损失的总和。 两个损失函数: 和 然后我构建模型: 当我训练时,它会产生错误: 请帮忙,谢谢!

  • 问题内容: 将Tensorflow与Python绑定一起使用时,如何将张量转换为numpy数组? 问题答案: 急切执行默认情况下 处于启用状态,因此只需调用Tensor对象即可。 有关更多信息,请参见NumPy兼容性。值得注意的是(来自文档), Numpy数组可以与Tensor对象共享内存。 对一个的任何更改都可能反映在另一个上。 大胆强调我的。副本可以返回也可以不返回,这是基于数据是在CPU还是

  • 问题内容: 假设我有; 我尝试转换; 我现在正在vstack上通过迭代来解决它,但是对于特别大的LIST来说确实很慢 您对最佳有效方法有何建议? 问题答案: 通常,您可以沿任意轴连接整个数组序列: 但你 也 必须对列表中的形状和每个阵列的维度担心(用于2维3x5的输出,你需要确保它们都是2维正由-5阵列的话)。如果要将一维数组连接为二维输出的行,则需要扩展其维数。 正如Jorge的答案所指出的那样

  • 我正在研究将字符串从一个字符集转换为另一个字符集,阅读了很多关于它的示例,最终找到了下面的代码,这对我来说很好,作为一个字符集编码的新手,我想知道,这是否是正确的方法。 要将字符串从ASCII转换为EBCDIC,我必须执行以下操作: 要将EBCDIC转换为ASCII,我必须:

  • 我有一个cuda张量列表: 我正在尝试应用k-折叠交叉验证。因此,我想使用k倍索引列表为该列表编制索引: 但它给了我错误: 根据这个答案,问题是我不能使用索引列表来索引列表。在努比是允许的。 所以我试着把它转换成Numpy: 但它给了我一个错误: 我真的必须在索引之前将这些单独的cuda张量移动到cpu吗?如何在cuda上轻松索引cuda张量列表(利用GPU进行训练模型)?或者这是不可能的,我应该

  • 我有 2 个数组: 我希望array1元素成为新Hash中的键,array2元素成为同一个Hash中相应的值。有人能建议一下怎么做吗? 谢谢