keras学习笔记----简单的两个小例子(多分类与二分类)

上一次的博客中,我学习了使用顺序模型去实现一个网络模型的基本内容。首先我们要线性的堆叠网络层,这里要先使用Sequential构造器来构造一个模型对象,然后使.add()方法去添加网络层,第一层的全连接层一定要指定输入大小。接下来,对模型进行编译,使用.compile()方法配置网络,包含损失函数,优化方法和评估标准三个参数,最后,通过.fit()函数对模型进行训练。这事一个简单的顺序模型过程,下面我们使用keras的顺序模型实现两个简单的小例子。

一、基于多层感知器的softmax多分类

熟悉神经网络的人都知道多层感知机是怎么一回事,在这里我也不做过多的描述,直接看例子。

from keras.layers import Dense, Dropout, Activation
from keras.models import Sequential
from keras.optimizers import SGD
import keras
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((1000, 20))
y_test = keras.utils.to_categorical(np.random.randint(10, size=(1000, 1)), num_classes=10)

# 使用顺序模型搭建网络
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=20)) # 64个神经元的全连接层,输入维度20
model.add(Dropout(0.5))  # 随机失活层
model.add(Dense(64, activation='relu')) # 全连接
model.add(Dropout(0.5))  # 随机失活层
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=50, batch_size=128)

# 评估
score = model.evaluate(x_test, y_test, batch_size=128)
print(score)

二、基于多层感知机的二分类

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

# 生成数据
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)
print(score)

实现了两个简单的小例子,通过这两个例子,可以看出使用keras搭建网络模型,既简单又快。是一个很好的工具。

猜你喜欢

转载自blog.csdn.net/gyt15663668337/article/details/89348577
今日推荐