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

解決Keras 中加入lambda層無法正常載入模型問題

 更新時間:2020年06月16日 16:45:36   作者:機器玄學實踐者  
這篇文章主要介紹了解決Keras 中加入lambda層無法正常載入模型問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

剛剛解決了這個問題,現(xiàn)在記錄下來

問題描述

當使用lambda層加入自定義的函數(shù)后,訓練沒有bug,載入保存模型則顯示Nonetype has no attribute 'get'

問題解決方法:

這個問題是由于缺少config信息導致的。lambda層在載入的時候需要一個函數(shù),當使用自定義函數(shù)時,模型無法找到這個函數(shù),也就構建不了。

m = load_model(path,custom_objects={"reduce_mean":self.reduce_mean,"slice":self.slice})

其中,reduce_mean 和slice定義如下

  def slice(self,x, turn):
    """ Define a tensor slice function
    """
    return x[:, turn, :, :]
  def reduce_mean(self, X):
    return K.mean(X, axis=-1)

補充知識:含有Lambda自定義層keras模型,保存遇到的問題及解決方案

一,許多應用,keras含有的層已經不能滿足要求,需要透過Lambda自定義層來實現(xiàn)一些layer,這個情況下,只能保存模型的權重,無法使用model.save來保存模型。

保存時會報

TypeError: can't pickle _thread.RLock objects

二,解決方案,為了便于后續(xù)的部署,可以轉成tensorflow的PB進行部署。

from keras.models import load_model
import tensorflow as tf
import os, sys
from keras import backend as K
from tensorflow.python.framework import graph_util, graph_io

def h5_to_pb(h5_weight_path, output_dir, out_prefix="output_", log_tensorboard=True):
  if not os.path.exists(output_dir):
    os.mkdir(output_dir)
  h5_model = build_model()
  h5_model.load_weights(h5_weight_path)
  out_nodes = []
  for i in range(len(h5_model.outputs)):
    out_nodes.append(out_prefix + str(i + 1))
    tf.identity(h5_model.output[i], out_prefix + str(i + 1))
  model_name = os.path.splitext(os.path.split(h5_weight_path)[-1])[0] + '.pb'
  sess = K.get_session()
  init_graph = sess.graph.as_graph_def()
  main_graph = graph_util.convert_variables_to_constants(sess, init_graph, out_nodes)
  graph_io.write_graph(main_graph, output_dir, name=model_name, as_text=False)
  if log_tensorboard:
    from tensorflow.python.tools import import_pb_to_tensorboard
    import_pb_to_tensorboard.import_to_tensorboard(os.path.join(output_dir, model_name), output_dir)

def build_model():
  inputs = Input(shape=(784,), name='input_img')
  x = Dense(64, activation='relu')(inputs)
  x = Dense(64, activation='relu')(x)
  y = Dense(10, activation='softmax')(x)
  h5_model = Model(inputs=inputs, outputs=y)
  return h5_model

if __name__ == '__main__':
  if len(sys.argv) == 3:
    # usage: python3 h5_to_pb.py h5_weight_path output_dir
    h5_to_pb(h5_weight_path=sys.argv[1], output_dir=sys.argv[2])

以上這篇解決Keras 中加入lambda層無法正常載入模型問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python表示矩陣的方法分析

    Python表示矩陣的方法分析

    這篇文章主要介紹了Python表示矩陣的方法,結合具體實例形式分析了Python表示矩陣的方法與相關操作注意事項,需要的朋友可以參考下
    2017-05-05
  • python操作toml文件的示例代碼

    python操作toml文件的示例代碼

    這篇文章主要介紹了python操作toml文件的示例代碼,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-11-11
  • Python描述器descriptor詳解

    Python描述器descriptor詳解

    這篇文章主要向我們詳細介紹了Python描述器descriptor,需要的朋友可以參考下
    2015-02-02
  • python3使用smtplib實現(xiàn)發(fā)送郵件功能

    python3使用smtplib實現(xiàn)發(fā)送郵件功能

    這篇文章主要為大家詳細介紹了python3使用smtplib實現(xiàn)發(fā)送郵件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • numpy求平均值的維度設定的例子

    numpy求平均值的維度設定的例子

    今天小編就為大家分享一篇numpy求平均值的維度設定的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python中參數(shù)打包和解包的實現(xiàn)

    Python中參數(shù)打包和解包的實現(xiàn)

    在Python中,打包和解包參數(shù)是一種操作方式,可以將多個參數(shù)打包成一個元組或字典,也可以將一個元組或字典解包成多個參數(shù),本文就來介紹一下如何使用
    2023-09-09
  • 詳解使用python爬取抖音app視頻(appium可以操控手機)

    詳解使用python爬取抖音app視頻(appium可以操控手機)

    這篇文章主要介紹了詳解使用python爬取抖音app視頻(appium可以操控手機),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 讓你一文弄懂Pandas文本數(shù)據(jù)處理

    讓你一文弄懂Pandas文本數(shù)據(jù)處理

    文本數(shù)據(jù)具有數(shù)據(jù)維度高、數(shù)據(jù)量大且語義復雜等特點,是一種較為復雜的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關于Pandas文本數(shù)據(jù)處理的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • Python機器學習NLP自然語言處理基本操作詞袋模型

    Python機器學習NLP自然語言處理基本操作詞袋模型

    本文是Python機器學習NLP自然語言處理系列文章,帶大家開啟一段學習自然語言處理 (NLP) 的旅程。本篇文章主要學習NLP自然語言處理基本操作之詞袋模型
    2021-09-09
  • Python實現(xiàn)的簡單線性回歸算法實例分析

    Python實現(xiàn)的簡單線性回歸算法實例分析

    這篇文章主要介紹了Python實現(xiàn)的簡單線性回歸算法,結合實例形式分析了線性回歸算法相關原理、功能、用法與操作注意事項,需要的朋友可以參考下
    2018-12-12

最新評論