Maison >développement back-end >Tutoriel Python >Gestionnaire d'erreurs productif

Gestionnaire d'erreurs productif

Patricia Arquette
Patricia Arquetteoriginal
2024-11-25 00:41:14178parcourir

Productive error handler

La tâche de classification est la plus courante en IA car elle nécessite peu de bibliothèques. J'essaie d'écrire en utilisant les ressources d'un compilateur en ligne, sans comprendre les subtilités du travail.

def rle_decode(mask_rle, shape=(1280, 1918, 1)):
    '''
    mask_rle: run-length as string formated (start length)
    shape: (height,width) of array to return 
    Returns numpy array, 1 - mask, 0 - background
    '''
    img = np.zeros(shape[0]*shape[1], dtype=np.uint8)

    s = mask_rle.split()
    starts, lengths = [np.asarray(x, dtype=int) for x in (s[0:][::2], s[1:][::2])]
    starts -= 1
    ends = starts + lengths    
    for lo, hi in zip(starts, ends):
        img[lo:hi] = 1

    img = img.reshape(shape)
    return img

Par exemple, en utilisant la fonction de décodage des masques 0/1, vous pouvez vous fier à leurs longueurs. Mais pour générer des paquets batch d'un réseau de neurones, vous devez toujours surveiller les résultats actuels.

def keras_generator(gen_df, batch_size):
    while True:
        x_batch = []
        y_batch = []

        for i in range(batch_size):
            img_name, mask_rle = gen_df.sample(1).values[0] 
            img = cv2.imread('data/train/{}'.format(img_name))
            mask = rle_decode(mask_rle)

            img = cv2.resize(img, (256, 256)) 
            mask = cv2.resize(mask, (256, 256))

            x_batch += [img] 
            y_batch += [mask]

        x_batch = np.array(x_batch) / 255. 
        y_batch = np.array(y_batch)

        yield x_batch, np.expand_dims(y_batch, -1)
  1. J'aime mettre des sorties intermédiaires du résultat pour un contact visuel avec le code
  2. Si le résultat ne semble pas satisfaisant, j'édite les fonctions précédentes
im_id = 5
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(25, 25))
axes[0].imshow(x[im_id]) 
axes[1].imshow(pred[im_id, ..., 0] > 0.5) 

plt.show()

Sortie du résultat = contact garanti avec le code écrit. Dans ce cas, la gestion des exceptions n'est pas nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn