masks = np.load('mask-data.npy')
labels = np.load('Rlabels.npy')
img_size=224
IMAGET = []
MASKT = []
X,X_v,Y,Y_v = train_test_split(images,masks, test_size=0.15, random_state = 42, shuffle = True)
gc.collect()
IMAGET = np.array(IMAGET)
MASKT = np.array(MASKT)
X_v = np.array(X_v)
Y_v = np.array(Y_v)
train_datagen = ImageDataGenerator(rotation_range=30,height_shift_range=0.2, zoom_range =0.3,horizontal_flip=True,vertical_flip=True)
valid_datagen = ImageDataGenerator(rotation_range=30,height_shift_range=0.2, zoom_range = 0.3,horizontal_flip=True,vertical_flip=True)
IMG_DIM = (224,224,1)
import tensorflow as tf
def dice_loss(y_true, y_pred):
smooth = 1.
y_true_f = K.flatten(y_true)
y_pred_f = K.flatten(y_pred)
intersection = y_true_f * y_pred_f
score = (2. * K.sum(intersection) + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)
return 1. - score
### bce_dice_loss = binary_crossentropy_loss + dice_loss
def bce_dice_loss(y_true, y_pred):
return binary_crossentropy(y_true, y_pred) + dice_loss(y_true, y_pred)
def get_iou_vector(A, B):
t = A>0
p = B>0
intersection = np.logical_and(t,p)
union = np.logical_or(t,p)
iou = (np.sum(intersection) + 1e-10 )/ (np.sum(union) + 1e-10)
return iou
def iou_metric(label, pred):
return tf.py_function(get_iou_vector, [label, pred>0.5], tf.float64)
from tensorflow.keras.applications import EfficientNetB0
effnet = EfficientNetB0(weights = None,include_top=False,input_shape=(IMG_DIM))
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dense,Dropout,GlobalAveragePooling2D
model = effnet.output
model = GlobalAveragePooling2D()(model)
model = Dropout(0.5)(model)
#model = Dense(3,activation = "softmax")(model)
model = Model(inputs = effnet.input,outputs = model)
model.summary()
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau
model.compile(optimizer=Adam(learning_rate=0.0001),loss="sparse_categorical_crossentropy",metrics = ["accuracy",iou_metric])
checkpoint = ModelCheckpoint("effnet.h5",monitor="val_accuracy",save_best_only=True,mode="auto",verbose=1)
earlystop = EarlyStopping(monitor="val_accuracy",patience=5,mode="auto",verbose=1)
reduce_lr = ReduceLROnPlateau(monitor = 'val_accuracy', factor = 0.3,
patience = 2, min_delta = 0.001,
mode = 'auto', verbose = 1)
history = model.fit(train_datagen.flow(X, Y),validation_data = (X_v, Y_v),steps_per_epoch= 10, epochs = 50, verbose=1,callbacks=[checkpoint,reduce_lr])
'我的代码哪里是我的错误,请帮助和错误输出 InvalidArgumentError:不兼容的形状:[25,224,224] vs. [25] [[node Equal(定义在 /Users/gorke/dedneme/bakak.py:118)]] [Op :__inference_train_function_589177]
函数调用栈:train_function
2021-11-14 16:36:06.192807: I tensorflow/core/platform/cpu_feature_guard.cc:142] 这个 TensorFlow 二进制文件使用 oneAPI 深度神经网络库 (oneDNN) 进行了优化,以在性能关键操作中使用以下 CPU 指令: AVX AVX2 要在其他操作中启用它们,请使用适当的编译器标志重建 TensorFlow。2021-11-14 22:12:50.532037:W tensorflow/core/framework/op_kernel.cc:1755] 未知:InvalidArgumentError:无法计算 Mul,因为输入 #1(从零开始)应该是浮点张量,但它是bool 张量 [Op:Mul] Traceback(最近一次调用最后一次):
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 242 行,调用 返回函数(设备、令牌、参数)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 131 行,调用 ret = self._func(*args)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py”,第 302 行,在包装器中返回 func(*args, **kwargs)
文件“C:/Users/gorke/dedneme/segmentation.py”,第 121 行,在 get_iou_vector intersection = np.sum(t * p)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py”,第 1125 行,在 binary_op_wrapper 返回 func(x, y, name=name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py”,第 1457 行,在 _mul_dispatch 中返回 multiply(x, y, name=name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\util\dispatch.py”,第 201 行,在 wrapper return target(*args, **kwargs)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py”,第 509 行,乘法返回 gen_math_ops.mul(x, y, name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\gen_math_ops.py”,第 6165 行,在 mul _ops.raise_from_not_ok_status(e, name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\framework\ops.py”,第 6843 行,在 raise_from_not_ok_status Six.raise_from(core._status_to_exception(e.code, message), None)
文件“”,第 3 行,在 raise_from
tensorflow.python.framework.errors_impl.InvalidArgumentError:无法计算 Mul,因为输入 #1(从零开始)应该是一个浮点张量,但它是一个布尔张量 [Op:Mul]
2021-11-14 22:14:44.710685:W tensorflow/core/framework/op_kernel.cc:1755] 未知:InvalidArgumentError:无法计算 Mul,因为输入 #1(从零开始)应该是浮点张量,但它是bool 张量 [Op:Mul] Traceback(最近一次调用最后一次):
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 242 行,调用 返回函数(设备、令牌、参数)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 131 行,调用 ret = self._func(*args)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py”,第 302 行,在包装器中返回 func(*args, **kwargs)
文件“C:/Users/gorke/dedneme/segmentation.py”,第 121 行,在 get_iou_vector intersection = np.sum(t * p)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py”,第 1125 行,在 binary_op_wrapper 返回 func(x, y, name=name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py”,第 1457 行,在 _mul_dispatch 中返回 multiply(x, y, name=name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\util\dispatch.py”,第 201 行,在 wrapper return target(*args, **kwargs)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py”,第 509 行,乘法返回 gen_math_ops.mul(x, y, name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\gen_math_ops.py”,第 6165 行,在 mul _ops.raise_from_not_ok_status(e, name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\framework\ops.py”,第 6843 行,在 raise_from_not_ok_status Six.raise_from(core._status_to_exception(e.code, message), None)
文件“”,第 3 行,在 raise_from
tensorflow.python.framework.errors_impl.InvalidArgumentError:无法计算 Mul,因为输入 #1(从零开始)应该是一个浮点张量,但它是一个布尔张量 [Op:Mul]
2021-11-14 22:19:39.476601:W tensorflow/core/framework/op_kernel.cc:1755] 未知:InvalidArgumentError:无法计算 Mul,因为输入 #1(从零开始)应该是浮点张量,但它是bool 张量 [Op:Mul] Traceback(最近一次调用最后一次):
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 242 行,调用 返回函数(设备、令牌、参数)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 131 行,调用 ret = self._func(*args)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py”,第 302 行,在包装器中返回 func(*args, **kwargs)
文件“C:/Users/gorke/dedneme/segmentation.py”,第 121 行,在 get_iou_vector intersection = np.sum(t * p)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py”,第 1125 行,在 binary_op_wrapper 返回 func(x, y, name=name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py”,第 1457 行,在 _mul_dispatch 中返回 multiply(x, y, name=name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\util\dispatch.py”,第 201 行,在 wrapper return target(*args, **kwargs)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\math_ops.py”,第 509 行,乘法返回 gen_math_ops.mul(x, y, name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\gen_math_ops.py”,第 6165 行,在 mul _ops.raise_from_not_ok_status(e, name)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\framework\ops.py”,第 6843 行,在 raise_from_not_ok_status Six.raise_from(core._status_to_exception(e.code, message), None)
文件“”,第 3 行,在 raise_from
tensorflow.python.framework.errors_impl.InvalidArgumentError:无法计算 Mul,因为输入 #1(从零开始)应该是一个浮点张量,但它是一个布尔张量 [Op:Mul]
2021-11-14 23:15:24.128064:W tensorflow/core/framework/op_kernel.cc:1755] 无效参数:TypeError:无法将 0 转换为 dtype bool Traceback 的 EagerTensor(最近一次调用最后一次):
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 242 行,调用 返回函数(设备、令牌、参数)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 131 行,调用 ret = self._func(*args)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py”,第 302 行,在包装器中返回 func(*args, **kwargs)
文件“C:/Users/gorke/dedneme/bakak.py”,第 79 行,在 get_iou_vector p = B>0
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\gen_math_ops.py”,第 3963 行,在更大的 _result = pywrap_tfe.TFE_Py_FastPathExecute(
TypeError:无法将 0 转换为 dtype bool 的 EagerTensor
2021-11-14 23:21:21.918825:W tensorflow/core/framework/op_kernel.cc:1755] 无效参数:TypeError:无法将 0 转换为 dtype bool Traceback 的 EagerTensor(最近一次调用最后一次):
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 242 行,调用 返回函数(设备、令牌、参数)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\script_ops.py”,第 131 行,调用 ret = self._func(*args)
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\autograph\impl\api.py”,第 302 行,在包装器中返回 func(*args, **kwargs)
文件“C:/Users/gorke/dedneme/bakak.py”,第 80 行,在 get_iou_vector p = B>0
文件“C:\Users\gorke\anaconda3\lib\site-packages\tensorflow\python\ops\gen_math_ops.py”,第 3963 行,在更大的 _result = pywrap_tfe.TFE_Py_FastPathExecute(
TypeError:无法将 0 转换为 dtype bool' 的 EagerTensor