Keras学习 1 使用keras建立序列模型

本文详细介绍如何使用Keras框架建立序列模型进行二元分类任务。从模型搭建、编译到训练全过程,涵盖输入维度设置、损失函数选择及评估指标定义,通过实例演示全连接网络的构建与训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Keras学习 1 使用keras建立序列模型

Sequential model就是一些列layers的简单堆叠。首先, 我们建立一个简单的前向全连接网络。输入维度784

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

model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])

我们也可以通过.add直接添加新的网络层。

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

这个模型需要知道所处理的输入数据的维度,所以第一层也只有第一层需要知道输入数据的维度。因为之后的网络层可以推断所处理的维度。有几种方式传入输入数据的维度。
1.传入input_shape给第一层。 它必须是整数或者是None,None代表任意整数。但是input_shape并没有包括batch的维度。
2.一些二维的网络层,支持input_dim来定义维度,如Dense,三维的可以通过input_dim 和 input_length。
3。如果需要定义batch维度,可以传入batch_size。如果传入batch_size=32和input_shape=(6,8),等价于每一个batch的形状都是(32,6,8).

model = Sequential()
model.add(Dense(32, input_dim=784))
model = Sequential()
model.add(Dense(32, input_shape=(784,)))

这两个add等价
在训练之前,需要通过compile method来定义训练过程。它有三个参数:
1.优化器optimizer。
2.损失函数 loss function。
3. 一些评价指标。如accuracy等。

# For a multi-class classification problem
model.compile(optimizer='rmsprop', #可以选择其他的optimizer
              loss='categorical_crossentropy',#因为多分类问题选择categorical
              metrics=['accuracy'])

# For a binary classification problem
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

# For a mean squared error regression problem
model.compile(optimizer='rmsprop',
              loss='mse')

# For custom metrics
import keras.backend as K

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

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy', mean_pred])

训练过程使用fit函数

# 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)

使用一个MLP做例子,二元分类问题。

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout

# Generate dummy data
x_train = np.random.random((1000, 20))
y_train = np.random.randint(2, size=(1000, 1))
x_test = np.random.random((100, 20))
y_test = np.random.randint(2, size=(100, 1))

model = Sequential()
model.add(Dense(64, input_dim=20, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

model.fit(x_train, y_train,
          epochs=20,
          batch_size=128)
score = model.evaluate(x_test, y_test, batch_size=128)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值