theano 以及 TensorFlow 是 keras 的 backend(后端支持),因此,keras 本质上是对 thenao 或者 TensorFlow 的进一步封装(wrapper)。
- keras 安装完成之后,会自动在用户 home 目录创建
.keras/keras.json
文件,用于配置 keras 的一些基本信息:"backend": "tensorflow"
- from keras.datasets import mnist ⇒ mnist.load_data(),在线下载的 mnist.npz也是在该文件夹下;
0. 查看后端
>> from keras import backend
>> backend.image_dim_ordering()
'tf'
>> backend.image_data_format()
'channels_last'
1. 内置数据集
-
mnist
>> from keras.datasets import mnist >> (X_train, y_train), (X_test, y_test) = mnist.load_data() >> X_train.shape (60000, 28, 28) >> y_train.shape (60000,) >> X_test.shape (10000, 28, 28) >> y_test.shape (10000,)
2. keras 下的 packages
-
keras.layers(对 layer 的抽象)
- from keras.layers import Input:输入层(首字母大写,是一个类,表示输入层),类构造函数接受的参数分别有,
- shape:tuple 类型,标识维度信息
- from keras.layers import Dense:全连接层,该类构造函数接收的参数分别有:
- output_dim:下一层的神经元的数目
- activation:字符串类型,默认为
'linear'
,所以一定要使用关键字参数的形式,对其进行设置;
- from keras.layers import Input:输入层(首字母大写,是一个类,表示输入层),类构造函数接受的参数分别有,
-
keras.models(对最终训练学习到的模型进行抽象)
- from keras.models import Model,其构造函数接受的参数分别为:
- input,输入
- output, 输出
- 很像 theano 下的
theano.function(...)
- from keras.models import Model,其构造函数接受的参数分别为:
-
Model 类更为重要的是其丰富的成员函数,ae = Model(input=…, output=…)
-
ae.compile(),参数列表主要有:
- optimizer:字符串类型,
adam
/...
- loss:字符串类型,
mse
/...
- optimizer:字符串类型,
-
ae.fit(),用于正式的训练,参数列表主要有:
- x, y:输入和输出,比如对于自编码器,x 和 y 是一致的;
- shuffle:是否 shuffle 数据
-
ae.predict():对单个的样本进行预测;
-
3. 网络搭建
from keras.models import Sequential
from keras.layers import Embedding, SimpleRNN
model = Sequential()
model.add(Embedding(10000, 32))
model.add(SimpleRNN(32))
#
model.summary()
model.pop()
# 移除最后添加的层
- model.pop():移除最后添加的层
- model.output_shape:查看输出层(也即最后添加的层)的大小;