keras简单的实际入门教程

keras搭建模型

方法一

Sequential()搭建模型

  1. Sequential 是多个网络层的线性堆栈,可以从keras的线性模型库导入Sequential模型:
from keras.models import Sequential
import tensorflow as tf

#创建一个网络模型
model = Sequential()

Using Tensorflow backend.
  1. 将一些网络层的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'))

  1. 也可以自己直接输入一个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))

创建好模型后可以使用model.summary()来查看最终的模型的结构

方法二-使用Model()模型来创建

方法一是使用Sequential()(中文名是序贯模型)此处使用Model()(函数式模型)来搭建模型。

中文文档中的说明:Keras 函数式模型接口是用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径。一句话,只要你的模型不是类似 VGG 一条路走到黑的模型,或者你的模型需要多于一个的输出,那么你总应该选择函数式模型。函数式模型是最广泛的一类模型,序贯模型(Sequential)只是它的一种特殊情况。

  1. 简单的demo
from keras.layers import Input,Dense
from keras.models 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)
model.compile(optimizer='rmaprop',
              loss='categorical_crossentropy',
              metrics=['accuracy']
              )
model.fit(data,labels)#start training 
  1. 编译创建好的环境

网络模型创建好之后,需要对网络的歇息过程进行配置,否则在调用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

model.compile(loss='categorical_crossentropy', 
                                optimizer='sgd', metrics=['accuracy'])
  1. 训练模型
    训练模型一般使用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'))
model.compile(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'))
model.compile(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 = keras.utils.to_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)
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值