keras是什么
Keras是一个用Python编写的高级神经网络API,它能够以TensorFlow,CNTK或者Theano作为后端运行。
keras使用
定义模型
neural network是什么样的,需要在keras首先定义model是sequential
设置隐藏层hidden layer,以及激活函数activation,这里假设使用sigmoid当作激活函数
1
| model.add(activation('sigmoid'))
|
模型评估
评估模型的好坏
compile编译
定义一个loss
1
| loss = ('cateqorical crossentropy')
|
最佳模型
Configuration
1
| model.compile = (loss = 'categorical crossentropy', optimizer = 'adam')
|
optimizer后面可以跟不同的方式,都是梯度下降,只是学习率不同
寻找最优网络参数
- 给定四个输入, x_train, y_train, batch_size, nb_epoch
- 训练数据就是一张一张的图片, 每张图片对应的标签就是数字
- Two dimension matrix(X_train),第一个dimension代表你有多少个example,第二个dimension代表你有多少个pixel
- Two dimension matrix(y_train),第一个dimension代表你有多少个training example,第二个dimension代表label(黑色的为数字,从0开始计数)
1
| model.fit(x_train, y_train, batch_size =100, nb_epoch = 20)
|
batch_size表示一个batch有多大(这里是将100个example放到一个batch中),nb_epoch等于20表示对每个batch重复20次
Keras、Tensorflow实战
数据集采用fashion_mnist数据集,不同于MNIST手写数据集,Fashion-MNIST数据集包含了10个类别的图像,分别是:t-shirt(T恤),trouser(牛仔裤),pullover(套衫),dress(裙子),coat(外套),sandal(凉鞋),shirt(衬衫),sneaker(运动鞋),bag(包),ankle boot(短靴)。
导入库
1 2 3 4 5
| import tensorflow as tf from tensorflow import keras import matplotlib.pyplot as plt %matplotlib inline import numpy as np
|
下载fashion_mnist数据
1 2
| fashion_mnist = keras.datasets.fashion_mnist (train_images, train_labels),(test_images, test_labels) = fashion_mnist.load_data()
|
构建网络
1 2 3 4 5 6 7 8 9 10 11
| train_labels_onehot = tf.keras.utils.to_categorical(train_labels) # 独热编码 test_labels_onehot = tf.keras.utils.to_categorical(test_labels) model = tf.keras.Sequential() model.add(tf.keras.layers.Flatten(input_shape = (28,28))) #28*28 model.add(tf.keras.layers.Dense(128,activation='relu')) model.add(tf.keras.layers.Dropout(0.5)) model.add(tf.keras.layers.Dense(128,activation='relu')) model.add(tf.keras.layers.Dropout(0.5)) model.add(tf.keras.layers.Dense(128,activation='relu')) model.add(tf.keras.layers.Dropout(0.5)) model.add(tf.keras.layers.Dense(10,activation='softmax'))
|
添加Dropout层可以抑制过拟合,但抑制过拟合最好的方法是:1.增加训练数据 2.减少网络容量
输出各层情况
配置训练方法时使用的优化器、损失函数以及评测标准
1 2 3 4
| model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), loss='categorical_crossentropy', metrics=['acc'] )
|
训练模型
1 2
| history = model.fit(train_images,train_labels_onehot,epochs=10, validation_data=(test_images,test_labels_onehot))
|
作图
1 2
| history = model.fit(train_images,train_labels_onehot,epochs=10, validation_data=(test_images,test_labels_onehot))
|
1 2 3
| plt.plot(history.epoch,history.history.get('acc'),label='acc') plt.plot(history.epoch,history.history.get('val_acc'),label='val_acc') plt.legend()
|