keras的整体架构

keras 源码的整体组成架构 

│  activations.py
│  callbacks.py
│  constraints.py
│  initializations.py 
│  losses.py
│  metrics.py
│  models.py
│  objectives.py
│  optimizers.py
│  regularizers.py
│  __init__.py
│  
│─applications
│      # 一些典型的应用
│      ...
│      
├─backend
│      # Theano, Tensorflow 后端
│      # tensorflow_backend.py 和 theano_backend.py 有一些同名的函数
│      # 这样 import backend as K 以后应用时,就不需要考虑 Tensorflow 和 Theano 的具体差别了
│      cntk_backend.py
│      common.py
│      load_backend.py
│      numpy_backend.py
│      tensorflow_backend.py
│      theano_backend.py
│      __init__.py
│      
├─datasets
│      # 下载数据集的脚本
│      ...
│  
├─engine
│       base_layer.py
│       input_layer.py
│       network.py
│       saving.py
│       sequential.py
│       topology.py   # Keras Layer, Input, Merge, Container的基础(重构“引擎”模块拓扑部分)
│       training.py
│       training_arrays.py
│       training_generator.py
│       training_utils.py
│       __init__.py
│  
├─layers
│        # 相当于 engine 的应用
│        # 通过继承 engine/topology.py 的 Layer 来实现不同的层
│       convolutional.py
│       __init__.py
│      ...     
│  
├─legacy
│       interfaces.py
│       layers.py
│       __init__.py
│      
├─preprocessing
│      image.py
│      sequence.py
│      text.py
│      __init__.py
│      
├─utils
│       __init__.py
│       conv_utils.py
│       data_utils.py
│       generic_utils.py
│       io_utils.py
│       layer_utils.py
│       multi_gpu_utils.py
│       np_utils.py
│       test_utils.py
│       vis_utils.py
│       __init__.py
│      
└─wrappers
         scikit_learn.py
         __init__.py

1.1 序列模型

  • 顺序模型是多个网络层的线性堆叠。
  • keras.models.Sequential(Model) 
    类. 代表普通的多层前馈神经网络.
  • keras.models.Sequential#add(self,layer) 
    方法. 像搭积木一样, 往后加上一层.
from keras.models import Sequential
from keras.layers import Dense, Activation

model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])

model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))

1.2 函数式模型

Keras 函数式 API 是定义复杂模型(如多输出模型、有向无环图,或具有共享层的模型)的方法。

这部分文档假设你已经对 Sequential  顺序模型比较熟悉。

让我们先从一些简单的例子开始。

Sequential 模型可能是实现这种网络的一个更好选择,但这个例子能够帮助我们进行一些简单的理解。

  • 网络层的实例是可调用的,它以张量为参数,并且返回一个张量
  • 输入和输出均为张量,它们都可以用来定义一个模型(Model)
  • 这样的模型同 Keras 的 Sequential 模型一样,都可以被训练
from keras.layers import Input, Dense
from keras.models import Model

# 这部分返回一个张量
inputs = Input(shape=(784,))

# 层的实例是可调用的,它以张量为参数,并且返回一个张量
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)

# 这部分创建了一个包含输入层和三个全连接层的模型
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
model.fit(data, labels)  # 开始训练

有关keras的更多学习文档关注keras官方文档:https://keras.io/zh/

你可能感兴趣的:(keras)