關於__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):結合函式 get_submodules_from_kwargs來看,可以看出keras_modules_injection是用來宣告訓練時的backend、layers、 models以及utils(python utils是乙個小型python函式和類的集合,它使常見模式更簡單,更容易)。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
再往下看是一些網路結構的匯入:
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_injectiondef 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...