由于keras学习中涉及到很多python统计类型的函数,为了方便大家学习,对部分代码进行详细解说。
代码
import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
# 生成虚拟数据
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) 是一个具有 64 个隐藏神经元的全连接层。
# 在第一层必须指定所期望的输入数据尺寸:
# 在这里,是一个 20 维的向量。
model.add(Dense(64, activation='relu', input_dim=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=20,
batch_size=128)
score = model.evaluate(x_test, y_test, batch_size=128)
np.random.random((1000, 20))
生成一个1000x20的矩阵,矩阵中每个数值取值[0.0, 1.0)
每行是20个数值。第一个中括号表示是1000行,里面的每个中括号表示每行20个数值(或20列)。
例如:np.random.random((2, 20))
[[0.76864065 0.16544777 0.91225942 0.96979709 0.97639038 0.81960567
0.10791369 0.14690604 0.295259 0.94330635 0.72380199 0.65406781
0.39281451 0.36129603 0.41686626 0.02929583 0.61383308 0.76576476
0.96673321 0.20488361]
[0.34531702 0.36220246 0.24123767 0.49511975 0.11214061 0.07556306
0.34616241 0.32386213 0.95908638 0.70804342 0.20851361 0.02748738
0.26976578 0.8293944 0.76263526 0.19507013 0.84914938 0.71675057
0.79020945 0.12766118]]
参考:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.random.random.html
np.random.randint(10, size=(100, 1)
随机生成100x1的矩阵。其中每个数值取值[0,10)正整数(0、1、2...9)
例如:np.random.randint(10, size=(5, 1)
[[2]
[5]
[2]
[4]
[5]]
参考:https://www.orchome.com/1568
keras.utils.to_categorical(np.random.randint(10, size=(2, 1)), num_classes=10)
1.先生成2x1的矩阵,矩阵中每个数值取值[0,10)中的正整数。
[[6]
[0]]
2.矩阵中每行转化为一类(一共分为10类)
[[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
[1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]