Keras入门1

Keras 的核心数据结构是“模型”,模型是一种组织网络层的方式。Keras 中主要的模型是 Sequential 模型,Sequential 是一系列网络层按顺序构成的栈。

从keras.models引入Sequential

from keras.models import Sequential
model = Sequential()

两种建模方式:

1 将网络层实例的列表传递给 Sequential 的构造器,来创建一个 Sequential 模型:

from keras.models import Sequential
from keras.layers import Dense, Activation

model = Sequential([
    Dense(32, input_shape=(784,)),# 32表示输出的个数,input_shape输入,后面有讲
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])
#Dense表示层

Dense表示层
激活函数:relu,relu函数的公式就是:f(x)=max(0,x)
softmax,交叉熵函数

2 使用 .add() 方法将各层添加到模型中

model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))

指定输入数据的尺寸
顺序模型中的第一层(且只有第一层,因为下面的层可以自动地推断尺寸)需要接收关于其输入尺寸的信息。有几种方法来做到这一点:

传递一个 input_shape 参数给第一层。它是一个表示尺寸的元组 (一个整数或 None 的元组,其中 None 表示可能为任何正整数)。在 input_shape 中不包含数据的 batch 大小。
某些 2D 层,例如 Dense,支持通过参数 input_dim 指定输入尺寸,某些 3D 时序层支持 input_dim 和 input_length 参数。
如果你需要为你的输入指定一个固定的 batch 大小(这对 stateful RNNs 很有用),你可以传递一个 batch_size 参数给一个层。如果你同时将 batch_size=32 和 input_shape=(6, 8) 传递给一个层,那么每一批输入的尺寸就为 (32,6,8)。

模型编译

在训练模型之前,您需要配置学习过程,这是通过 compile 方法完成的。它接收三个参数:

优化器 optimizer。它可以是现有优化器的字符串标识符,如 rmsprop 或 adagrad,也可以是 Optimizer 类的实例。
损失函数 loss, 模型试图最小化的目标函数。它可以是现有损失函数的字符串标识符,如 categorical_crossentropy 或 mse,也可以是一个目标函数。
评估标准 metrics。对于任何分类问题,你都希望将其设置为 metrics = [‘accuracy’]。评估标准可以是现有的标准的字符串标识符,也可以是自定义的评估标准函数。

# (线性)回归问题  loss用均方误差
model.compile(optimizer='rmsprop',
              loss='mse')
              
#二分类问题     loss用'binary_crossentropy'        
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])
              
 #多分类问题      loss用'categorical_crossentropy'
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])



# 自定义评估标准函数 
import keras.backend as K

def mean_pred(y_true, y_pred):
    return K.mean(y_pred)

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy', mean_pred])
                        
# 对于具有 10 个类的单输入模型(多分类分类):

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'])

# 生成虚拟数据
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(10, size=(1000, 1))

# 将标签转换为分类的 one-hot 编码
one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)

训练模型,以 32 个样本为一个 batch 进行迭代

model.fit(data, one_hot_labels, epochs=10, batch_size=32)#epochs迭代次数

在测试模式,返回误差值和评估标准值

score = model.evaluate(x_test, y_test, batch_size=16)

为输入样本生成输出预测

predict = model.predict(x, batch_size=32)

模型优化

多加几个层(Dense),也可以改变隐藏层输出的个数,如32

model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值