keras原始碼之application目錄

2021-09-24 04:49:34 字數 3392 閱讀 6084

關於__pycache__目錄請參考keras原始碼之__pycache__目錄

裡面包含了各種網路的實現模組(包括權重路徑以及設定、網路結構等)。

接下來是一些已經棄用的函式模組:

backend=backend,

layers=layers,

models=models,

utils=utils)

def set_keras_submodules(backend=none,

layers=none,

models=none,

utils=none,

engine=none):

# deprecated, will be removed in the future.(已經棄用)

global _keras_backend

global _keras_layers

global _keras_models

global _keras_utils

_keras_backend = backend

_keras_layers = layers

_keras_models = models

_keras_utils = utils

def get_keras_submodule(name):

# deprecated, will be removed in the future.(已經棄用)

if name not in :

raise importerror(

'can only retrieve one of "backend", '

'"layers", "models", or "utils". '

'requested: %s' % name)

if _keras_backend is none:

raise importerror('you need to first `import keras` '

'for instance, you can do:\n\n'

'```\n'

'import keras\n'

'```\n\n'

'or, preferably, this equivalent formulation:\n\n'

'```\n'

'```\n')

if name == 'backend':

return _keras_backend

elif name == 'layers':

return _keras_layers

elif name == 'models':

return _keras_models

elif name == 'utils':

return _keras_utils

這兩個函式的注釋顯示它們已經被棄用,在將來會被移除。

def keras_modules_injection(base_fun):

# hasattr 用來判斷類中是否有指定的函式

kwargs['backend'] = backend

kwargs['layers'] = layers

kwargs['models'] = models

kwargs['utils'] = utils

return base_fun(*args, **kwargs)

def get_submodules_from_kwargs(kwargs):

backend = kwargs.get('backend', _keras_backend)

layers = kwargs.get('layers', _keras_layers)

models = kwargs.get('models', _keras_models)

utils = kwargs.get('utils', _keras_utils)

for key in kwargs.keys():

if key not in ['backend', 'layers', 'models', 'utils']:

raise typeerror('invalid keyword argument: %s', key)

return backend, layers, models, utils

結合函式 get_submodules_from_kwargs來看,可以看出keras_modules_injection是用來宣告訓練時的backend、layers、 models以及utils(python utils是乙個小型python函式和類的集合,它使常見模式更簡單,更容易)。

再往下看是一些網路結構的匯入:

from .vgg16 import vgg16

from .vgg19 import vgg19

from .resnet50 import resnet50

from .inception_v3 import inceptionv3

from .inception_resnet_v2 import inceptionresnetv2

from .xception import xception

from .mobilenet import mobilenet

from .mobilenet_v2 import mobilenetv2

from .densenet import densenet121, densenet169, densenet201

from .nasnet import nasnetmobile, nasnetlarge

from . import keras_modules_injection

每個網路還實現了三個函式:

@keras_modules_injection

def vgg16(*args, **kwargs):

return vgg16.vgg16(*args, **kwargs)# 網路實現

keras原始碼分析之Dense

本文主要講解一下dense層的原始碼,dense層即最常用的全連線層,很簡單,主要是重寫了build與call方法,在我們自定義layer時,也可以參考該層的實現。class dense layer def init self,units,activation none use bias true ...

原始碼解析 JDK原始碼之LinkedHashMap

linkedhashmap原始碼,基於 jdk1.6.43 他繼承了hashmap,並且實現了插入和訪問的有序功能 public class linkedhashmapextends hashmapimplements map 其也有乙個entry內部類,繼承了 hashmap 的entry 內部類...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...