首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NotImplementedError:无法将符号张量(up_sampling2d_4_target:0)转换为numpy数组

NotImplementedError:无法将符号张量(up_sampling2d_4_target:0)转换为numpy数组
EN

Stack Overflow用户
提问于 2020-02-27 09:59:10
回答 1查看 1.5K关注 0票数 0

NotImplementedError:无法将符号张量(up_sampling2d_4_target:0)转换为numpy数组。

跟踪误差

代码语言:javascript
复制
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( (intersection + eps) / (union + eps), axis=0)

NotImplementedError跟踪(最近一次调用)在1415年,而True:--> 16loss_history = fit() 17如果np.min([mh.History‘’val_loss_history中的mh ])< -0.2: 18中断

在fit() 1 def fit()中:->2 seg_model.compile(optimizer=Adam(1e-3,衰变=1e-6),loss=IoU,度量=‘二进制_精度’)34 step_count = min(MAX_TRAIN_STEPS,train_df.form//批_SIZE)5 aug_gen = create_aug_gen(make_image_gen(train_df))

~/venv/lib/python3.7/site-packages/tensorflow_core/python/training/tracking/base.py in _method_wrapper(self,*args,**kwargs) 455 self._self_setattr_tracking = False # pylint: self._self_setattr_tracking=Protected-Access456 self._self_setattr_tracking:-> 457 self._self_setattr_tracking= method(self,*args,**kwargs) 458最后: 459 self._self_setattr_tracking = previous_value # pylint: disable=protected-access

编译中的~/venv/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py (自、优化器、丢失、度量、loss_weights、sample_weight_mode、weighted_metrics、target_tensors、distribute、**kwargs) 371 372 #创建了模型损失和加权度量子图。-> 373 self._compile_weights_loss_and_weighted_metrics() 374 375 #火车、测试和预测意志函数

~/venv/lib/python3.7/site-packages/tensorflow_core/python/training/tracking/base.py in _method_wrapper(self,*args,**kwargs) 455 self._self_setattr_tracking = False # pylint: self._self_setattr_tracking=Protected-Access456 self._self_setattr_tracking:-> 457 self._self_setattr_tracking= method(self,*args,**kwargs) 458最后: 459 self._self_setattr_tracking = previous_value # pylint: disable=protected-access

~/venv/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py in _compile_weights_loss_and_weighted_metrics(self,sample_weights)

1651 # loss_weight_2 *output_2_loss_fn(.)+ 1652 #层损失-> 1653 self.total_loss =self._prepare_total_loss(掩码) 1654 1655 def _prepare_skip_target_masks(self):

~/venv/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py in _prepare_total_loss(自我,面具)17111712(loss_fn,'reduction'):-> 1713 per_sample_losses = loss_fn.call(y_truey_pred) 1714 weighted_losses = losses_utils.compute_weighted_loss( 1715 per_sample_losses,

~/venv/lib/python3.7/site-packages/tensorflow_core/python/keras/losses.py in call(self,y_true,y_pred) 219 y_pred,y_true = tf_losses_util.squeeze_or_expand_dimensions( 220 y_pred,y_true) -> 221返回self.fn(y_true,y_pred,**self._fn_kwargs) 22223def get_config(self):

在IoU(y_true,y_pred,eps) 5 ##交集中,在## 6 def IoU(y_true,y_pred,eps=1e-6)中:-如果np.max(y_true) == 0.0: 8返回IoU(1-y_true,1-y_pred) ##空图像;calc IoU of zeros 9交叉口= K.sum(y_true * y_pred,axis=1,2,3)

<array_function internals> in amax(*args,**kwargs)

在amax中的~/venv/lib/python3.7/site-packages/numpy/core/fromnumeric.py (a,轴,输出,保持,初始值,其中) 2619“2620

返回_wrapreduction(a,np.maximum,'max',轴,无,out,-> 2621 keepdims=keepdims,initial=initial,where=where) 2622 2623

~/venv/lib/python3.7/site-packages/numpy/core/fromnumeric.py in _wrapreduction(obj,ufunc,方法,轴,dtype,out,**kwargs) 88返回减少(axis=axis,out=out,**passkwargs) 89 -> 90返回ufunc.reduce(obj,axis,dtype,out,**passkwargs) 91 92

~/venv/lib/python3.7/site-packages/tensorflow_core/python/framework/ops.py in (Self) 734 def array(self):735引发NotImplementedError(“无法将符号张量({})转换为numpy”数组--> 736“数组”。“.format(self.name)”737 738 def len(self):

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

阵列。

EN

回答 1

Stack Overflow用户

发布于 2020-02-27 13:48:25

不能将numpy与tensorflow Tensor结合使用--它们是两种不同的东西。

问题在于:

代码语言:javascript
复制
if np.max(y_true) == 0.0:
    return IoU(1-y_true, 1-y_pred) ## empty image; calc IoU of zeros

相反,您需要这些行:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60430561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档