如何解决尝试对int16图像使用骰子系数损失功能
我正在使用Python 3.7.7。和Tensorflow 2.3.0。
当我尝试使用此丢失功能时:
def dice_coef(y_true,y_pred):
y_true_f = K.flatten(y_true)
y_pred_f = K.flatten(y_pred)
intersection = K.sum(y_true_f * y_pred_f)
return (2 * intersection + 1) // (K.sum(y_true_f) + K.sum(y_pred_f) + 1)
def dice_coef_loss(y_true,y_pred):
return 1-dice_coef(y_true,y_pred)
使用U-Net:
model.compile(tf.keras.optimizers.Adam(lr=(1e-4) * 2),loss=dice_coef_loss,metrics=['accuracy'])
我收到此错误:
TypeError Traceback (most recent call last)
<ipython-input-25-91bea884e0c8> in <module>()
----> 1 results = model.fit(X_train,y_train,batch_size=4,epochs=50,validation_data=(X_valid,y_valid))
10 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args,**kwargs)
971 except Exception as e: # pylint:disable=broad-except
972 if hasattr(e,"ag_error_metadata"):
--> 973 raise e.ag_error_metadata.to_exception(e)
974 else:
975 raise
TypeError: in user code:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:806 train_function *
return step_function(self,iterator)
<ipython-input-19-deec0ad5082f>:8 dice_coef_loss *
return 1-dice_coef(y_true,y_pred)
<ipython-input-24-8de47985e665>:4 dice_coef *
intersection = K.sum(y_true_f * y_pred_f)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_ops.py:1141 binary_op_wrapper
raise e
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_ops.py:1125 binary_op_wrapper
return func(x,y,name=name)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_ops.py:1457 _mul_dispatch
return multiply(x,name=name)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper
return target(*args,**kwargs)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_ops.py:509 multiply
return gen_math_ops.mul(x,name)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/gen_math_ops.py:6176 mul
"Mul",x=x,y=y,name=name)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py:506 _apply_op_helper
inferred_from[input_arg.type_attr]))
TypeError: Input 'y' of 'Mul' Op has type float32 that does not match type int16 of argument 'x'.
关于如何解决它的任何想法?
我也尝试过使用此版本:
def dice_coef(y_true,y_pred):
y_true_f = K.flatten(y_true)
y_pred_f = K.flatten(y_pred)
intersection = K.sum(y_true_f * y_pred_f)
return (2.0 * intersection + 1.0) / (K.sum(y_true_f) + K.sum(y_pred_f) + 1.0)
def dice_coef_loss(y_true,y_pred)
但是我遇到同样的错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。