Keras过程学习记录

本文介绍如何使用Keras搭建一个简单的全连接神经网络分类模型,包括模型构建、编译及训练过程。文中详细解释了Dense层参数设置、SGD优化器配置、损失函数与评估指标的选择,并给出完整代码实例。

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

model.add(Dense(64, activation='relu', input_dim=20))

Dense是一个全连接层,64是指拥有64个隐藏层,在第一层的时候必须标注输入数据类型,也就是这里的input_dim,这是指的一般二维数据的情况下,在三维的时候还要说明input_length,这都是用来指定输入的input_shape的,activation指的就是激活函数应用的是relu。

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])

在训练模型之前,我们需要通过compile来对学习过程进行配置。compile接收三个参数:

  • 优化器optimizer:该参数可指定为已预定义的优化器名,如rmspropadagrad,或一个Optimizer类的对象。这里的优化器用的是SGD也就是梯度递减,这里面的参数:

    • lr:大于0的浮点数,学习率
    • momentum:大于0的浮点数,动量参数
    • decay:大于0的浮点数,每次更新后的学习率衰减值
    • nesterov:布尔值,确定是否使用Nesterov动量

  • 损失函数loss:该参数为模型试图最小化的目标函数,它可为预定义的损失函数名,如categorical_crossentropymse,也可以为一个损失函数。

  • 指标列表metrics:对分类问题,我们一般将该列表设置为metrics=['accuracy']。指标可以是一个预定义指标的名字,也可以是一个用户定制的函数.指标函数应该返回单个张量,或一个完成metric_name - > metric_value映射的字典。这里很明显看的就是分类器的准确率。

model.fit(x_train, y_train,
          epochs=20,
          batch_size=128)

这里面的意思就是模型已经建立好了,需要通过.fit函数来进行训练了,epoches指的是训练的迭代次数。batch就不介绍了,前面博客有说的。

附完整代码:

from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
import keras

# Generate dummy data
import numpy as np
x_train = np.random.random((1000, 20))
y_train = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)
x_test = np.random.random((100, 20))
y_test = keras.utils.to_categorical(np.random.randint(10, size=(100, 1)), num_classes=10)

model = Sequential()
# Dense(64) is a fully-connected layer with 64 hidden units.
# in the first layer, you must specify the expected input data shape:
# here, 20-dimensional vectors.
model.add(Dense(64, activation='relu', input_dim=20))
model.add(Dense(64, activation='relu'))
model.add(Dense(10, activation='softmax'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
              optimizer=sgd,
              metrics=['accuracy'])

model.fit(x_train, y_train,
          epochs=20,
          batch_size=128)
score = model.evaluate(x_test, y_test, batch_size=128)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值