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

使用K.function()調試keras操作

 更新時間:2020年06月17日 08:42:14   作者:龐加萊  
這篇文章主要介紹了使用K.function()調試keras操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

Keras的底層庫使用Theano或TensorFlow,這兩個庫也稱為Keras的后端。無論是Theano還是TensorFlow,都需要提前定義好網絡的結構,也就是常說的“計算圖”。

在運行前需要對計算圖編譯,然后才能輸出結果。那這里面主要有兩個問題,第一是這個圖結構在運行中不能任意更改,比如說計算圖中有一個隱含層,神經元的數量是100,你想動態(tài)的修改這個隱含層神經元的數量那是不可以的;第二是調試困難,keras沒有內置的調試工具,所以計算圖的中間結果是很難看到的,一旦最終輸出跟預想不一致,很難找到問題所在。

這里談一談本人調試keras的一些經驗:

分階段構建你的神經網絡

不要一口氣把整個網絡全部寫完,這樣很難保證中間結果的正確性。加如一個CNN文本分類模型是這樣的(如下代碼),應該在加了Embedding層后,停止,打印一下中間結果,看看跟embedding向量能不能對上,輸出的shape對不對。對上了再進行下一步操作。

有的人覺得這樣很浪費時間,但是除非你能一遍寫對,否則你將花上5倍的時間發(fā)現錯誤。

 # model parameters:
 embedding_dims = 50
 cnn_filters = 100
 cnn_kernel_size = 5
 dense_hidden_dims = 200
 model = Sequential()
 model.add(Embedding(nb_words,embedding_dims,input_length=maxlen))
 model.add(Dropout(0.5))
 model.add(Conv1D(cnn_filters, cnn_kernel_size,padding='valid', activation='relu'))
 model.add(GlobalMaxPooling1D())
 model.add(Dense(dense_hidden_dims))
 model.add(Dropout(0.5))
 model.add(Activation('relu'))
 model.add(Dense(1))
 model.add(Activation('sigmoid'))
 return model

使用K.function()函數打印中間結果

function函數可以接收傳入數據,并返回一個numpy數組。使用這個函數我們可以方便地看到中間結果,尤其對于變長輸入的Input。

下面是官方關于function的文檔。

function

keras.backend.function(inputs, outputs, updates=None)

實例化 Keras 函數。

參數

inputs: 占位符張量列表。

outputs: 輸出張量列表。

updates: 更新操作列表。

**kwargs: 需要傳遞給 tf.Session.run 的參數。

返回

輸出值為 Numpy 數組。

異常

ValueError: 如果無效的 kwargs 被傳入。

example

下面這個例子是打印一個LSTM層的中間結果,值得注意的是這個LSTM的sequence是變長的,可以看到輸出的結果sequence長度分別是64和128

 import keras.backend as K
 from keras.layers import LSTM, Input
 import numpy as np
 
 I = Input(shape=(None, 200)) 
 lstm = LSTM(20, return_sequences=True)
 f = K.function(inputs=[I], outputs=[lstm(I)])
 
 data1 = np.random.random(size=(2, 64, 200)) 
 print(f([data1])[0].shape)
 
 data2 = np.random.random(size=(2, 128, 200)) 
 print(f([data2])[0].shape)
 
 K.clear_session()
 
 # (2, 64, 20)
 # (2, 128, 20)

其他的調試技巧

有頻繁張量變換操作的,如dot, mat, reshape等等,記得加一行形狀變化的注釋,如(100, 128)--> (100, 64)

可以使用tensorboard查看網絡的參數情況

確保你的數據沒有問題,很多時候輸出不對不是神經網絡有問題,而是數據有問題

以上這篇使用K.function()調試keras操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 一個簡單的python程序實例(通訊錄)

    一個簡單的python程序實例(通訊錄)

    這篇文章主要分享了用python實現的一個通訊錄實例,學習python的朋友可以參考下
    2013-11-11
  • 人機交互程序 python實現人機對話

    人機交互程序 python實現人機對話

    這篇文章主要為大家詳細介紹了人機交互程序,初步實現python人機對話,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Python幾種繪制時間線圖的方法

    Python幾種繪制時間線圖的方法

    這篇文章主要介紹了Python幾種繪制時間線圖的方法,Matplotlib 作為 Python 家族最為重要的可視化工具,其基本的 API 以及繪制流程還是需要掌握的
    2022-08-08
  • python清空命令行方式

    python清空命令行方式

    今天小編就為大家分享一篇python清空命令行方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 利用Python將多張圖片合成視頻的實現

    利用Python將多張圖片合成視頻的實現

    這篇文章主要介紹了利用Python將多張圖片合成視頻的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • python對DICOM圖像的讀取方法詳解

    python對DICOM圖像的讀取方法詳解

    DICOM(Digital Imaging and Communications in Medicine)即醫(yī)學數字成像和通信,是醫(yī)學圖像和相關信息的國際標準(ISO 12052)。下面這篇文章主要給大家介紹了關于python對DICOM圖像讀取的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • Python與MongoDB輕松管理數據

    Python與MongoDB輕松管理數據

    本文將介紹如何使用Python操作MongoDB,包括安裝MongoDB、安裝Python的MongoDB驅動程序、連接到MongoDB、插入、查詢、更新和刪除數據,以及示例代碼
    2023-11-11
  • ORM Django 終端打印 SQL 語句實現解析

    ORM Django 終端打印 SQL 語句實現解析

    這篇文章主要介紹了ORM Django 終端打印 SQL 語句實現解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 對python中的高效迭代器函數詳解

    對python中的高效迭代器函數詳解

    今天小編就為大家分享一篇對python中的高效迭代器函數詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 使用Python和XPath解析動態(tài)JSON數據的操作指南

    使用Python和XPath解析動態(tài)JSON數據的操作指南

    JSON動態(tài)數據在Python中扮演著重要的角色,為開發(fā)者提供了處理實時和靈活數據的能力,動態(tài)JSON數據的獲取可能涉及到網絡請求和API調用,可以使用Python和XPath來解析動態(tài)JSON數據,接下來小編就給大家介紹一下操作步驟
    2023-09-09

最新評論

白水县| 全州县| 屯留县| 武冈市| 京山县| 正宁县| 龙陵县| 辛集市| 金川县| 当雄县| 绥滨县| 上饶县| 舒兰市| 肥东县| 嘉鱼县| 乐至县| 禹城市| 马边| 英吉沙县| 广宁县| 浦县| 尼勒克县| 仁寿县| 奉贤区| 鲁甸县| 西丰县| 遵义县| 敦煌市| 柘荣县| 赤壁市| 攀枝花市| 南皮县| 竹溪县| 拜城县| 敖汉旗| 阳山县| 上思县| 松江区| 唐河县| 潮安县| 黎平县|