0
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)
X.shape,X_v.shape
X = np.append( X, [ np.fliplr(x) for x in X], axis=0 )
Y = np.append( Y, [ np.fliplr(y) for y in Y], axis=0 )
X.shape,Y.shape
train_datagen = ImageDataGenerator(brightness_range=(0.9,1.1),
zoom_range=[.9,1.1],fill_mode='nearest')
val_datagen = ImageDataGenerator()
IMG_DIM = (224,224,3)
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 = "imagenet",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='binary_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])

`我是 python 新手,我不知道如何解决错误 ERROR = InvalidArgumentError:不兼容的形状:[18,224,224,1] vs. [18,3] [[node gradient_tape/binary_crossentropy/mul/BroadcastGradientArgs(定义在 /用户/gorke/dedneme/bakak.py:104) ]] [Op:__inference_train_function_38062]

函数调用栈:train_function

2021-11-15 00:18:51.499094: I tensorflow/core/platform/cpu_feature_guard.cc:142] 这个 TensorFlow 二进制文件使用 oneAPI 深度神经网络库 (oneDNN) 进行了优化,以在性能关键操作中使用以下 CPU 指令: AVX AVX2 要在其他操作中启用它们,请使用适当的编译器标志重建 TensorFlow。2021-11-15 00:19:07.914846: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 行,在调用中 返回 func(device, token, args) 文件“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”,第 66 行,在 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-15 02:47:23.132670: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”,第 66 行,在 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 `

4

0 回答 0