欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Keras自定義IOU方式

 更新時間:2020年06月10日 14:51:32   作者:Nick Blog  
這篇文章主要介紹了Keras自定義IOU方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧!

def iou(y_true, y_pred, label: int):
  """
  Return the Intersection over Union (IoU) for a given label.
  Args:
    y_true: the expected y values as a one-hot
    y_pred: the predicted y values as a one-hot or softmax output
    label: the label to return the IoU for
  Returns:
    the IoU for the given label
  """
  # extract the label values using the argmax operator then
  # calculate equality of the predictions and truths to the label
  y_true = K.cast(K.equal(K.argmax(y_true), label), K.floatx())
  y_pred = K.cast(K.equal(K.argmax(y_pred), label), K.floatx())
  # calculate the |intersection| (AND) of the labels
  intersection = K.sum(y_true * y_pred)
  # calculate the |union| (OR) of the labels
  union = K.sum(y_true) + K.sum(y_pred) - intersection
  # avoid divide by zero - if the union is zero, return 1
  # otherwise, return the intersection over union
  return K.switch(K.equal(union, 0), 1.0, intersection / union)
 
def mean_iou(y_true, y_pred):
  """
  Return the Intersection over Union (IoU) score.
  Args:
    y_true: the expected y values as a one-hot
    y_pred: the predicted y values as a one-hot or softmax output
  Returns:
    the scalar IoU value (mean over all labels)
  """
  # get number of labels to calculate IoU for
  num_labels = K.int_shape(y_pred)[-1] - 1
  # initialize a variable to store total IoU in
  mean_iou = K.variable(0)
  
  # iterate over labels to calculate IoU for
  for label in range(num_labels):
    mean_iou = mean_iou + iou(y_true, y_pred, label)
    
  # divide total IoU by number of labels to get mean IoU
  return mean_iou / num_labels

補充知識:keras 自定義評估函數(shù)和損失函數(shù)loss訓練模型后加載模型出現(xiàn)ValueError: Unknown metric function:fbeta_score

keras自定義評估函數(shù)

有時候訓練模型,現(xiàn)有的評估函數(shù)并不足以科學的評估模型的好壞,這時候就需要自定義一些評估函數(shù),比如樣本分布不均衡是準確率accuracy評估無法判定一個模型的好壞,這時候需要引入精確度和召回率作為評估標準,不幸的是keras沒有這些評估函數(shù)。

以下是參考別的文章摘取的兩個自定義評估函數(shù)

召回率:

def recall(y_true, y_pred):
  true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
  possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
  recall = true_positives / (possible_positives + K.epsilon())
  return recall

精確度:

def precision(y_true, y_pred):
  true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
  predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
  precision = true_positives / (predicted_positives + K.epsilon())
  return precision

自定義了評估函數(shù),一般在編譯模型階段加入即可:

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy', precision, recall])

自定義了損失函數(shù)focal_loss一般也在編譯階段加入:

model.compile(optimizer=Adam(lr=0.0001), loss=[focal_loss],
metrics=['accuracy',fbeta_score], )

其他的沒有特別要注意的點,直接按照原來的思路訓練一版模型出來就好了,關鍵的地方在于加載模型這里,自定義的函數(shù)需要特殊的加載方式,不然會出現(xiàn)加載沒有自定義函數(shù)的問題:ValueError: Unknown loss function:focal_loss

解決方案:

model_name = 'test_calssification_model.h5'
model_dfcw = load_model(model_name,
            custom_objects={'focal_loss': focal_loss,'fbeta_score':fbeta_score})

注意點:將自定義的損失函數(shù)和評估函數(shù)都加入到custom_objects里,以上就是在自定義一個損失函數(shù)從編譯模型階段到加載模型階段出現(xiàn)的所有的問題。

以上這篇Keras自定義IOU方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python json轉(zhuǎn)字典字符方法實例解析

    Python json轉(zhuǎn)字典字符方法實例解析

    這篇文章主要介紹了Python json轉(zhuǎn)字典字符代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Python實現(xiàn)清理重復文件功能的示例代碼

    Python實現(xiàn)清理重復文件功能的示例代碼

    在電腦上或多或少的存在一些重復文件,體積小的倒沒什么,如果體積大的就很占內(nèi)存了。本文用python制作了一個刪除重復文件的小工具,核心代碼很簡單,希望對你有所幫助
    2022-07-07
  • Python 實現(xiàn)字符串中指定位置插入一個字符

    Python 實現(xiàn)字符串中指定位置插入一個字符

    下面小編就為大家分享一篇Python 實現(xiàn)字符串中指定位置插入一個字符,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • pyecharts如何旋轉(zhuǎn)折線圖的X軸標簽

    pyecharts如何旋轉(zhuǎn)折線圖的X軸標簽

    這篇文章主要介紹了pyecharts如何旋轉(zhuǎn)折線圖的X軸標簽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python中添加搜索路徑的方法實例

    Python中添加搜索路徑的方法實例

    我們平時在用python寫一些腳本作為工具時,經(jīng)常需要在其他腳本中加載該工具,這篇文章主要給大家介紹了關于Python中添加搜索路徑的相關資料,需要的朋友可以參考下
    2022-05-05
  • 解決Tensorflow 內(nèi)存泄露問題

    解決Tensorflow 內(nèi)存泄露問題

    今天小編就為大家分享一篇解決Tensorflow 內(nèi)存泄露問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python 列表降維的實例講解

    python 列表降維的實例講解

    今天小編就為大家分享一篇python 列表降維的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python合并字典鍵值并去除重復元素的實例

    Python合并字典鍵值并去除重復元素的實例

    下面小編就為大家?guī)硪黄狿ython合并字典鍵值并去除重復元素的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Python學習筆記之函數(shù)的參數(shù)和返回值的使用

    Python學習筆記之函數(shù)的參數(shù)和返回值的使用

    這篇文章主要介紹了Python學習筆記之函數(shù)的參數(shù)和返回值的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Python 編程速成(推薦)

    Python 編程速成(推薦)

    這篇文章主要介紹了Python 編程速成,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04

最新評論