Keras模型主要有两种,Sequential和函数式模型Model,引用方式如下:
from keras.models import Sequential
from keras.models import Model
首先说一下Sequential
Sequential是一系列网络层按顺序构成的栈
主要由三个部分组成:1. 使用add添加层 2. 使用compile定义损失函数和优化器 3. 使用fit feed网络数据。具体代码如下:
from Keras.models import Sequential
#实例化一个model
model=Sequential()
#向model里添加层
from keras.layers import Dense, Activation
#全连接层,第一层需指定输入维度(输入特征数),units代表这一层输出的特征数量,这里是64
model.add(Dense(units=64, input_dim=100))
#激活函数
model.add(Activation("relu"))
#不需要添加输入层特征数,模型会自动推算它是64
model.add(Dense(units=10))
#类别=10,激活函数选用softmax
model.add(Activation("softmax"))
#到这里模型网络层添加完毕
#接着指定损失函数和优化器。损失函数就是计算模型预测值和真实标签之间的差异,优化器指反向传播时使用的梯度下降方法。
from keras.optimizers import SGD
model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True))
#接着喂给模型数据,Keras以Numpy数组作为输入数据和标签的数据类型。
import numpy as np
(x_train = np.random.random((1000, 100))
y_train = np.random.randint(10, size=(1000, 1))
# Convert labels to categorical one-hot encoding
y_train = keras.utils.to_categorical(y_train, num_classes=10)
#batch_size=32,轮次=5。
model.fit(x_train, y_train, epochs=5, batch_size=32)
生成式函数模型Model。
这个Model里面的层有输入和输出。输入(指()里的tensor)是上一层的输出,输出也是一个tensor。compile和fit和Sequential相同。具体代码如下:
from Keras.models import Model
from Keras.layers import Input,Dense
#定义Input的维度,如果是图像那么shape可能是(None,None,3)
input=Input(shape=(784,))
x=Dense(units=64,activation='relu')(input)
x=Dense(units=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) # starts training
利用函数式模型的接口,我们可以很容易的重用已经训练好的模型:你可以把模型当作一个层一样,通过提供一个tensor来调用它。注意当你调用一个模型时,你不仅仅重用了它的结构,也重用了它的权重。
x = Input(shape=(784,))
# This works, and returns the 10-way softmax we defined above.
y = model(x)
网友评论