最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Keras訓(xùn)練好的.h5模型來(lái)測(cè)試一個(gè)實(shí)例

 更新時(shí)間:2020年07月06日 14:59:04   作者:bolt1st  
這篇文章主要介紹了使用Keras訓(xùn)練好的.h5模型來(lái)測(cè)試一個(gè)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧

環(huán)境:python 3.6 +opencv3+Keras

訓(xùn)練集:MNIST

下面劃重點(diǎn):因?yàn)镸NIST使用的是黑底白字的圖片,所以你自己手寫數(shù)字的時(shí)候一定要注意把得到的圖片也改成黑底白字的,否則會(huì)識(shí)別錯(cuò)(至少我得到的結(jié)論是這樣的 ,之前用白底黑字的圖總是識(shí)別出錯(cuò))

注意:需要測(cè)試圖片需要為與訓(xùn)練模時(shí)相同大小的圖片,RGB圖像需轉(zhuǎn)為gray

代碼:

import cv2
import numpy as np
from keras.models import load_model

model = load_model('fm_cnn_BN.h5') #選取自己的.h模型名稱
image = cv2.imread('6_b.png')
img = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) # RGB圖像轉(zhuǎn)為gray

#需要用reshape定義出例子的個(gè)數(shù),圖片的 通道數(shù),圖片的長(zhǎng)與寬。具體的參加keras文檔
img = (img.reshape(1, 1, 28, 28)).astype('int32')/255 
predict = model.predict_classes(img)
print ('識(shí)別為:')
print (predict)

cv2.imshow("Image1", image)
cv2.waitKey(0)


補(bǔ)充知識(shí):keras轉(zhuǎn)tf并加速(1)Keras轉(zhuǎn)TensorFlow,并調(diào)用轉(zhuǎn)換后模型進(jìn)行預(yù)測(cè)

由于方便快捷,所以先使用Keras來(lái)搭建網(wǎng)絡(luò)并進(jìn)行訓(xùn)練,得到比較好的模型后,這時(shí)候就該考慮做成服務(wù)使用的問題了,TensorFlow的serving就很合適,所以需要把Keras保存的模型轉(zhuǎn)為TensorFlow格式來(lái)使用。

Keras模型轉(zhuǎn)TensorFlow

其實(shí)由于TensorFlow本身以及把Keras作為其高層簡(jiǎn)化API,且也是建議由淺入深地來(lái)研究應(yīng)用,TensorFlow本身就對(duì)Keras的模型格式轉(zhuǎn)化有支持,所以核心的代碼很少。這里給出一份代碼:https://github.com/amir-abdi/keras_to_tensorflow,作者提供了一份很好的工具,能夠滿足絕大多數(shù)人的需求了。原理很簡(jiǎn)單:原理很簡(jiǎn)單,首先用 Keras 讀取 .h5 模型文件,然后用 tensorflow 的 convert_variables_to_constants 函數(shù)將所有變量轉(zhuǎn)換成常量,最后再 write_graph 就是一個(gè)包含了網(wǎng)絡(luò)以及參數(shù)值的 .pb 文件了。

如果你的Keras模型是一個(gè)包含了網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)重的h5文件,那么使用下面的命令就可以了:

python keras_to_tensorflow.py 
 --input_model="path/to/keras/model.h5" 
 --output_model="path/to/save/model.pb"

兩個(gè)參數(shù),一個(gè)輸入路徑,一個(gè)輸出路徑。輸出路徑即使你沒創(chuàng)建好,代碼也會(huì)幫你創(chuàng)建。建議使用絕對(duì)地址。此外作者還做了很多選項(xiàng),比如如果你的keras模型文件分為網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)重兩個(gè)文件也可以支持,或者你想給轉(zhuǎn)化后的網(wǎng)絡(luò)節(jié)點(diǎn)編號(hào),或者想在TensorFlow下繼續(xù)訓(xùn)練等等,這份代碼都是支持的,只是使用上需要輸入不同的參數(shù)來(lái)設(shè)置。

如果轉(zhuǎn)換成功則輸出如下:

begin====================================================
I1229 14:29:44.819010 140709034264384 keras_to_tf.py:119] Input nodes names are: [u'input_1']
I1229 14:29:44.819385 140709034264384 keras_to_tf.py:137] Converted output node names are: [u'dense_2/Sigmoid']
INFO:tensorflow:Froze 322 variables.
I1229 14:29:47.091161 140709034264384 tf_logging.py:82] Froze 322 variables.
Converted 322 variables to const ops.
I1229 14:29:48.504235 140709034264384 keras_to_tf.py:170] Saved the freezed graph at /path/to/save/model.pb

這里首先把輸入的層和輸出的層名字給出來(lái)了,也就是“input_1”和“dense_2/Sigmoid”,這兩個(gè)下面會(huì)用到。另外還告訴你凍結(jié)了多少個(gè)變量,以及你輸出的模型路徑,pb文件就是TensorFlow下的模型文件。

使用TensorFlow模型

轉(zhuǎn)換后我們當(dāng)然要使用一下看是否轉(zhuǎn)換成功,其實(shí)也就是TensorFlow的常見代碼,如果只用過Keras的,可以參考一下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np
from tensorflow.python.platform import gfile
import cv2
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "6"
 
# img = cv2.imread(os.path.expanduser('/test_imgs/img_1.png'))
# img = cv2.resize(img, dsize=(1000, 1000), interpolation=cv2.INTER_LINEAR)
# img = img.astype(float)
# img /= 255
# img = np.array([img])
 
# 初始化TensorFlow的session
with tf.Session() as sess:
 # 讀取得到的pb文件加載模型
 with gfile.FastGFile("/path/to/save/model.pb",'rb') as f:
 graph_def = tf.GraphDef()
 graph_def.ParseFromString(f.read())
 # 把圖加到session中
 tf.import_graph_def(graph_def, name='')
 
 # 獲取當(dāng)前計(jì)算圖
 graph = tf.get_default_graph()
 
 # 從圖中獲輸出那一層
 pred = graph.get_tensor_by_name("dense_2/Sigmoid:0")
 
 # 運(yùn)行并預(yù)測(cè)輸入的img
 res = sess.run(pred, feed_dict={"input_1:0": img})
 
 # 執(zhí)行得到結(jié)果
 pred_index = res[0][0]
 print('Predict:', pred_index)

在代碼中可以看到,我們用到了上面得到的輸入層和輸出層的名稱,但是在后面加了一個(gè)“:0”,也就是索引,因?yàn)槊Q只是指定了一個(gè)層,大部分層的輸出都是一個(gè)tensor,但依然有輸出多個(gè)tensor的層,所以需要制定是第幾個(gè)輸出,對(duì)于一個(gè)輸出的情況,那就是索引0了。輸入同理。

如果你輸出res,會(huì)得到這樣的結(jié)果:

('Predict:', array([[0.9998584]], dtype=float32))

這也就是為什么我們要取res[0][0]了,這個(gè)輸出其實(shí)取決于具體的需求,因?yàn)檫@里我是對(duì)一張圖做二分類預(yù)測(cè),所以會(huì)得到這樣一個(gè)結(jié)果

運(yùn)行的結(jié)果如果和使用Keras模型時(shí)一樣,那就說(shuō)明轉(zhuǎn)換成功了!

以上這篇使用Keras訓(xùn)練好的.h5模型來(lái)測(cè)試一個(gè)實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python求解排列中的逆序數(shù)個(gè)數(shù)實(shí)例

    Python求解排列中的逆序數(shù)個(gè)數(shù)實(shí)例

    這篇文章主要介紹了Python求解排列中的逆序數(shù)個(gè)數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-05-05
  • python調(diào)用Delphi寫的Dll代碼示例

    python調(diào)用Delphi寫的Dll代碼示例

    這篇文章主要介紹了python調(diào)用Delphi寫的Dll代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • 詳解Python中的argparse模塊

    詳解Python中的argparse模塊

    這篇文章主要介紹了詳解Python中的argparse模塊,argparse可以讓你輕松地編寫用戶友好的命令行界面,定義你的程序需要的參數(shù),自動(dòng)生成幫助和用法信息,需要的朋友可以參考下
    2023-07-07
  • Python入門_條件控制(詳解)

    Python入門_條件控制(詳解)

    下面小編就為大家?guī)?lái)一篇Python入門_條件控制(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-05-05
  • Python實(shí)現(xiàn)的井字棋(Tic Tac Toe)游戲示例

    Python實(shí)現(xiàn)的井字棋(Tic Tac Toe)游戲示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的井字棋(Tic Tac Toe)游戲,結(jié)合實(shí)例形式分析了井字棋的原理及Python相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-01-01
  • Python借助with語(yǔ)句實(shí)現(xiàn)代碼段只執(zhí)行有限次

    Python借助with語(yǔ)句實(shí)現(xiàn)代碼段只執(zhí)行有限次

    這篇文章主要介紹了Python借助with語(yǔ)句實(shí)現(xiàn)代碼段只執(zhí)行有限次,首先要定義一個(gè)能夠在with語(yǔ)句中使用的類實(shí)現(xiàn)enter和exit,下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-03-03
  • Python ORM框架SQLAlchemy學(xué)習(xí)筆記之安裝和簡(jiǎn)單查詢實(shí)例

    Python ORM框架SQLAlchemy學(xué)習(xí)筆記之安裝和簡(jiǎn)單查詢實(shí)例

    這篇文章主要介紹了Python ORM框架SQLAlchemy學(xué)習(xí)筆記之安裝和簡(jiǎn)單查詢實(shí)例,簡(jiǎn)明入門教程,需要的朋友可以參考下
    2014-06-06
  • Python pyecharts模塊安裝與入門教程

    Python pyecharts模塊安裝與入門教程

    Echarts 是一個(gè)由百度開源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開發(fā)者的認(rèn)可,這篇文章主要介紹了Python pyecharts數(shù)據(jù)可視化模塊安裝與入門教程,需要的朋友可以參考下
    2022-09-09
  • python簡(jiǎn)易遠(yuǎn)程控制單線程版

    python簡(jiǎn)易遠(yuǎn)程控制單線程版

    這篇文章主要為大家詳細(xì)介紹了python簡(jiǎn)易遠(yuǎn)程控制單線程版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python的paramiko模塊基本用法詳解

    python的paramiko模塊基本用法詳解

    paramiko 是一個(gè)用于在Python中執(zhí)行遠(yuǎn)程操作的模塊,支持SSH協(xié)議,它可以用于連接到遠(yuǎn)程服務(wù)器,執(zhí)行命令、上傳和下載文件,以及在遠(yuǎn)程服務(wù)器上執(zhí)行各種操作,這篇文章主要介紹了python的paramiko模塊基本用法,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

铜山县| 和平区| 清丰县| 青龙| 江安县| 阿克陶县| 法库县| 遂昌县| 海门市| 公主岭市| 郴州市| 来安县| 赤水市| 安达市| 新安县| 镇坪县| 乌拉特前旗| 深水埗区| 侯马市| 华蓥市| 仁化县| 东丽区| 克什克腾旗| 虞城县| 左贡县| 静宁县| 海口市| 神农架林区| 迁安市| 隆回县| 沙洋县| 千阳县| 灵山县| 宁蒗| 句容市| 凭祥市| 高台县| 林州市| 舞钢市| 墨竹工卡县| 台州市|