keras.model.Sequential

keras.model.Sequential

Sequential是序列模型,是模型的线性组合,可以按照顺序依次添加相应的网络层。在第一层中需要指定输入的尺寸,其余层中不必指定,模型能够自动推导中间过程的尺寸。

model = Sequential()
model.add(Dense(32, input_shape=(500,)))

# 与上面的代码等价
model = Sequential()
model.add(Dense(32, input_dim=500))

# 与上面的代码等价
model = Sequential()
model.add(Dense(32, batch_input_shape=(None, 500))) # None表示可能为任意正整数

训练函数之前需要对模型进行配置,使用compile方法,接收三个参数:

优化器optimizer:SGD(随机梯度下降法)、RMSprop(RNN)、Adagrad、Adadelta、Adam、Adamax、Nadam、TFOptimizer

损失函数loss:mse、mae、mape、msle、squared_hinge、hinge、binary_crossentropy(对数损失)、categorical_crossentropy(多类的对数损失)、sparse_categorical_crossentropy、kullback_leibler_divergence、poisson、cosine_proximity

评价指标metrics:通常采用metrics=[‘accuracy’]

# 多分类问题
model.compile(optimizer='rmsprop',
      		  loss='categorical_crossentropy',
       		  metrics=['accuracy'])

训练模型采用fit方法,主要接收以下几个参数:

x:Input_data

y:Target_data,在分类问题中即输入数据的label

batch_size:批处理样本数

epochs:迭代次数

model.fit(data, labels, epochs=10, batch_size=32)

示例

from keras.layers.core import Dense
from keras.models import Sequential
from keras.utils import to_categorical

model = Sequential()
model.add(Dense(32, activation='relu', input_dim=5))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

# 生成虚拟数据
import numpy as np
data = np.random.random((100, 5))
labels = np.random.randint(10, size=(100, 1))
# 将标签转换为分类的 one-hot 编码
one_hot_labels = to_categorical(labels, num_classes=10)
# 训练模型,以 32 个样本为一个 batch 进行迭代
model.fit(data, labels, epochs=10, batch_size=32)

你可能感兴趣的:(NLP,神经网络,深度学习,自然语言处理)