Keras 笔记
To take notes about the essential Keras elements to build basic neural networks. The explainations of each section haven’t finished yet.
1. Single Layer Neural Network (Linear Regression)
单层神经网络相当于(非)线性回归模型,第一个例子是构建一个最简单一元线性回归模型。
- 创建数据
单层神经网络模型需要数据进行训练,因此我们使用numpy
创建一些人造数据,且我们的 $y$ 为 $y = ax+b$ 。1
2
3
4
5
6
7
8
9
10
11
12
13
14import numpy as np
import tensorflow as tf
from tensorflow.keras import layers
import matplotlib.pyplot as plt
plt.style.use('seaborn')
# create data
X = np.linspace(-1, 1, 200)
np.random.shuffle(X) #randomize the data
Y = 2*X + 10 + np.random.normal(0, 0.05, (200,))
# plot data
plt.scatter(X, Y)
plt.show()
构建神经网络
- tf.keras.models.Sequential() 用Keras创建神经网络,我们首先需要用
1
2
3
4tf.keras.models.Sequential(
layers=None,
name=None
)tf.keras.models.Sequential()
来建立网络,这里面只有一个argument,即layers
。这里添加神经层的方法有两种,一种是建立model
的时候直接放入神经层,另一种是通过model.add
来添加。如:1
2
3
4
5
6
7
8# option 1
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(1, activation = None, use_bias = True)
])
# option 2
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(1, activation = None, use_bias = True)) -
上面的例子中我们给
model
添加了一个tf.keras.layers.Dense()
, 它代表最典型的全连接神经网络层,即每个输入节点连接到每个输出节点。1
2
3
4
5
6
7
8
9
10
11
12tf.keras.layers.Dense(
units,
activation=None,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None
)Arguments:
units
: 正整数,输出空间的维数。activation
:要使用的激活功能。如果未指定任何内容,则不应用激活(即 “linear” activation:a(x)= x)。use_bias
:Boolean,该层是否使用bias vector。- …其他看文档: https://www.tensorflow.org/api_docs/python/tf/keras/layers/Dense
models.Sequential().compile()
给
model
添加完神经层后,必须进行model.compile()
才能继续后续的模型训练,并且在model.compile
的时候需要指定optimizer
和loss
。1
2
3
4
5
6
7
8
9
10model.compile(
optimizer,
loss=None,
metrics=None,
loss_weights=None,
sample_weight_mode=None,
weighted_metrics=None,
target_tensors=None,
distribute=None,
)Arguments:
optimizer
:String(优化器名称)或优化器实例。请参阅tf.keras.optimizers。loss
:String(目标函数的名称)或目标函数。见tf.losses。metrics
:模型在训练和测试期间要评估的度量列表。通常,您将使用metrics = ['accuracy']
。- …其他看文档:https://www.tensorflow.org/api_docs/python/tf/keras/models/Sequential
- tf.keras.models.Sequential()
- 完整例子
2. Multiple Layer Neural Network
3. Convolutional Neural Network
4. Recurrent Neural Network
4.1 RNN
4.2 LSTM
5. Generative Adversarial Network
Reference
- TensorFlow Tutorial:https://www.tensorflow.org/tutorials/
- TensorFlow Guide:https://www.tensorflow.org/guide/
- Title: Keras 笔记
- Author: Zhanhang (Matthew) ZENG
- Link: https://zengzhanhang.com/2019/06/12/Keras-notes/
- Released Date: 2019-06-12
- Last update: 2020-05-17
- Statement: All articles in this blog, unless otherwise stated, are based on the CC BY-NC-SA 4.0 license.