keras简单的实际⼊门教程
keras搭建模型
⽅法⼀
Sequential()搭建模型
1. Sequential 是多个⽹络层的线性堆栈,可以从keras的线性模型库导⼊Sequential模型:
dels import Sequential
import tensorflow as tf
#创建⼀个⽹络模型
model = Sequential()
Using Tensorflow backend.
2. 将⼀些⽹络层的layers通过add()添加到Sequential中
from keras.layers import Dense,Activation
model.add(Dense(units=64,input_dim=100))
model.add(Activation(('relu'))
model.add(Dense(units=10))
model.add(Activation('softmax'))
3. 也可以⾃⼰直接输⼊⼀个list完成Sequential模型的搭建:
model = Sequential([(Dense(units=64,input_dim=100)),
(Activate('relu')),
(Dense(units=10)),
model.add(Activation('softmax'))
])
除了第⼀个输⼊的变量需要指定数据的shape以外,其他层的数据框架会⾃动推到。
可以使⽤ input_shape 这个关键字来指定第⼀层输⼊的 shape,input_shape 是⼀个 tuple 类型的数据(可以是整数也可以填⼊ None,如果填⼊ None 则表⽰此位置可能是任何正整数)但需要注意的是,数据的 batch⼤⼩不应包含在其中
有些 2D 层,可以使⽤ Dense,指定第⼀层输⼊维度 input_dim 来隐含的指定输⼊数据的 shape,它是⼀个 Int 类型的数据。还有⼀些 3D 的时域层⽀持通过参数 input_dim 和 input_length 来指定输⼊ shape。
model = Sequential()
model.add(Dense(32,input_shape=(784,)))
model= Sequential()
model.add(Dense(32,input_dim=784))tensorflow入门教程
创建好模型后可以使⽤model.summary()来查看最终的模型的结构
⽅法⼆-使⽤Model()模型来创建
⽅法⼀是使⽤Sequential()(中⽂名是序贯模型)此处使⽤Model()(函数式模型)来搭建模型。
中⽂⽂档中的说明:Keras 函数式模型接⼝是⽤户定义多输出模型、⾮循环有向模型或具有共享层的模型等复杂模型的途径。⼀句话,只要你的模型不是类似 VGG ⼀条路⾛到⿊的模型,或者你的模型需要多于⼀个的输出,那么你总应该选择函数式模型。函数式模型是最⼴泛的⼀类模型,序贯模型(Sequential)只是它的⼀种特殊情况。
1. 简单的demo
from keras.layers import Input,Dense
dels import Model
inputs = Input(shape=(784,))
# a layer instance is callable on a tensor, and returns a tensor
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)
model = Model(inputs=inputs,outputs=predictions)
modelpile(optimizer='rmaprop',
loss='categorical_crossentropy',
metrics=['accuracy']
)
model.fit(data,labels)#start training
2. 编译创建好的环境
⽹络模型创建好之后,需要对⽹络的歇息过程进⾏配置,否则在调⽤fit或者evaluate是会抛出异常。使⽤compile(self, optimizer, loss, metrics=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)
compile()主要接受前三个参数:
loss:字符串类型,⽤来指定损失函数,如:categorical_crossentropy,binary_crossentropy
optimizer:字符串类型,⽤来指定优化⽅式,如:rmsprop,adam,sgd
metrics:列表类型,⽤来指定衡量模型的指标,如:accuracy
modelpile(loss='categorical_crossentropy',
optimizer='sgd', metrics=['accuracy'])
3. 训练模型
训练模型⼀般使⽤fit()函数:
fit(self, x, y, batch_size=32, epochs=10,
verbose=1,
callbacks=None,
validation_split=0.0,
validation_data=None,
shuffle=True,
class_weight=None,
sample_weight=None,
initial_epoch=0)
x: 训练数据数组。如果输⼊的是框架本地的张量(如 Tensorflow 的数据 tensors ), x 可以是 None (默认) 。
y: ⽬标(标签)数据数组。如果输⼊的是框架本地的张量(如 Tensorflow 的数据 tensors ), y 可以是 None (默认) 。
batch_size: 指定 batch 的⼤⼩,为整数或者为 None。如果没有指定,默认为 32。
epochs: 指定训练时全部样本的迭代次数,为整数。
官⽅教程的例⼦
# For a single-input model with 2 classes (binary classification):
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
modelpile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
# Generate dummy data
import numpy as np
data = np.random.random((1000,100))
labels = np.random.randint(2, size=(1000,1))
# Train the model, iterating on the data in batches of 32 samples
model.fit(data, labels, epochs=10, batch_size=32)
# For a single-input model with 10 classes (categorical classification):
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
modelpile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
# Generate dummy data
import numpy as np
data = np.random.random((1000,100))
labels = np.random.randint(10, size=(1000,1))
# Convert labels to categorical one-hot encoding
one_hot_labels = _categorical(labels, num_classes=10)
# Train the model, iterating on the data in batches of 32 samples
model.fit(data, one_hot_labels, epochs=10, batch_size=32)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论