一、主页
上手Keras
◆ Keras 的核心数据结构是 model,一种组织网络层的方式。最简单的模型是 Sequential 顺序模型,它由多个网络层线性堆叠。对于更复杂的结构,你应该使用 Keras 函数式 API,它允许构建任意的神经网络图。
◆ Sequential 模型如下所示:
from keras.medels import Sequential
model = Sequential()
◆ 可以使用.add()来堆叠模型:
from keras.layers import Dense
model.add(Dense(units=64,activation='relu',input_dim=100))
model.add(Dense(units=10,activation='softmax'))
◆ 完成模型构建后,使用.compile()来配置学习过程:
# 选择交叉熵损失函数作为损失函数,随机梯度下降作为优化方法,准确率作为评价指标
model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics='accuracy')
◆ 现在可以批量地在训练数据上进行迭代了:
# X_train和Y_train是Numpy数组
model.fit(X_train,Y_train,epochs=5,batch_size=32)
◆ 或者可以手动将批次数据提供给模型:
model.train_on_batch(X_batch,Y_batch)
◆ 然后可以对模型性能进行评估:
loss_and_metrics = model.evaluate(X_test,Y_test,batch_size=128)
◆ 或者对新的数据进行预测:
classes = model.predict(X_test,batch_size=128)
二、快速开始
1、Sequential顺序模型
from keras.models import Sequential
from keras.layers import Dense,Activation
model = Sequential()
model.add(Dense(32,input_dim=784))
model.add(Activation('relu'))
(1)指定输入数据的尺寸
模型第一层(只有第一层需要)需要接收关于其输入尺寸的信息:
◆ 传递 input_shape 参数给第一层,它表示张量的形状,例如一个一阶张量[1,2,3]的shape为(3,),二阶张量[[1,2,3],[4,5,6]]的shape为(2,3)。
◆ 例如 Dense 的2D层,可以通过参数 input_dim 指定输入尺寸,而3D层使用 input_dim 和 input_length 参数。
input_length 表示输入数据的长度,input_dim 表示数据的维度
input_dim = input_shape(input_dim,)
input_dim,input_length = input_shape(input_length,input_dim)
◆ 如果需要为输入指定一个固定的 batch 大小,可以传递一个 batch_size 参数。例如,同时将 batch_size=32 和 input_shape=(6,8) 传递给一层,则每一批输入的尺寸为(32,6,8)。
# 由上述可得
model.add(Dense(32,input_shape(784,)))
# 等价于
model.add(Dense(32,input_dim=784))
(2)模型编译
模型训练之前,需要配置学习过程,通过 .compile() 方法完成,接收三个参数:
◆ 优化器 optimizer。可以是现有优化器的字符串标识符,如 rmsprop 或 adagrad ,也可以是Optimizer 类的实例。
◆ 损失函数 loss。可以是现有损失函数的字符串标识符,如 categorical_crossentropy 或 mse,也可以是一个目标函数。
◆ 评估标准 metrics。对于分类问题,metrics = [‘accuracy’]
(3)模型训练
通常会使用 .fit() 函数
未完待续。。。