生産的なエラーハンドラー

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-25 00:41:14182ブラウズ

Productive error handler

分類タスクは必要なライブラリが少ないため、AI で最も一般的です。作業の複雑さを理解せずに、オンライン コンパイラーのリソースを使用して記述しようとしています。

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

たとえば、マスク 0/1 をデコードする機能を使用すると、マスクの長さを信頼できます。ただし、ニューラル ネットワークのバッチ パケットを生成するには、現在の結果を監視する必要があります。

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. コードと目を合わせやすいように、結果の中間出力を置くのが好きです
  2. 満足のいく結果が得られないようであれば、以前の関数を編集します
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()

結果の出力 = 書かれたコードとの接触が保証されます。この場合、例外処理は必要ありません。

以上が生産的なエラーハンドラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。