0x01 环境
深度学习环境由于依赖较多,依赖关系复杂,一般都使用虚拟环境进行搭建,本例中使用annaconda虚拟环境进行验证学习,整个学习环境为anaconda+keras+tensorflow。
在环境安装开始前,首先应该查询安装的各模型的版本依赖关系,例如:
1:cuda与cudnn的版本依赖关系
2:python与keras的依赖关系
3:keras与cuda的依赖关系
4:cuda和GPU驱动的版本依赖关系
一个比较好的确定方法是:确定Keras的版本==》确定cuda和python的版本==》确定cudnn的版本==》下载最新版本的GPU驱动。
版本确定后,首先安装anaconda,通过anaconda创建虚拟环境,进入虚拟环境中,安装keras和tensorflow,下载时,部分较大的包可以使用清华的pip源,例如tensorflow:https://pypi.tuna.tsinghua.edu.cn/simple/tensorflow-gpu/。
0x02 简单示例
一个手写数字识别的训练及识别的例子:
from keras.datasets import mnist from keras import models from keras import layers from keras.layers import Dense, Activation from keras.models import Sequential from keras.utils import generic_utils import tensorflow as tf #从mnist数据集获取手写数字输入 (train_images, train_labels), (test_images, test_labels)=mnist.load_data() #输入数据验证 print(train_images.shape) print(len(train_images)) print(train_labels) #构建网络 network=models.Sequential([ Dense(512, activation='relu', input_shape=(28 * 28, )), Dense(10), Activation('softmax'), ]) #损失函数 loss #优化器 optimizer #监控的指标 metric network.compile(optimizer='rmsprop', loss = 'categorical_crossentropy', metrics=['accuracy']) #预处理 矩阵变换 归一化 train_images = train_images.reshape((60000, 28 * 28)) train_images = train_images.astype('float32') / 255 test_images = test_images.reshape((10000, 28 * 28)) test_images = test_images.astype('float32') / 255 #标签 train_labels = tf.keras.utils.to_categorical(train_labels) test_labels = tf.keras.utils.to_categorical(test_labels) #拟合 network.fit(train_images, train_labels, epochs=8, batch_size=64) #test test_loss, test_acc = network.evaluate(test_images, test_labels) print('test_acc', test_acc) print('test_loss', test_loss)