tensorflow开发环境搭建

安装 python
需要安装64位版本python v3.7.4 64 bit
解压安装傻瓜式安装
安装完成后windows需要配置环境变量
安装pip
1 2
| $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本 $ python get-pip.py # 运行安装脚本
|
安装虚拟环境 virtualenv
1
| pip install virtualenv #使用pip安装 virtualenv
|
创建虚拟环境
虚拟环境的用处
- 与主机环境隔离。
- 每个虚拟环境都独立安装python模块,可以通过切换虚拟环境使用不同版本的python模块。
语法
1 2 3 4 5
| virtualenv --system-site-packages -p python ./venv #创建名为venv的虚拟环境 cd venv #进入虚拟环境目录 cd Scripts #进入脚本目录 activate #执行虚拟环境激活命令 deactivate #退出虚拟环境
|
激活时会独立于主机的python独立安装一些初始模块 pip、wheel,使用
查看安装的模块及版本
安装Tensorflow
在激活的虚拟环境中使用
安装tensorflow的cpu版本,想要下载更多的版本可以使用
查询适合当前python版本的tensorflow版本
这里是官网的对tensorflow不同版本的解释
- tensorflow - 仅支持 CPU 的最新稳定版(建议新手使用)
- tensorflow-gpu - 支持 GPU 的最新稳定版(适用于 Ubuntu 和 Windows)
- tf-nightly - 仅支持 CPU 的预览每夜版(不稳定)
- tf-nightly-gpu - 支持 GPU 的预览每夜版(不稳定,适用于 Ubuntu 和 Windows)
- tensorflow==2.0.0-rc1 - 仅支持 CPU 的预览 TensorFlow 2.0 测试版(不稳定)
- tensorflow-gpu==2.0.0-rc1 - 支持 GPU 的预览 TensorFlow 2.0 测试版(不稳定,适用于 Ubuntu 和 Windows)
测试
1
| python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
|
如果成功执行这行代码,则安装成功
hello world
使用内置的手写数字训练集进行模型的训练
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import tensorflow as tf # 导入tensorflow模块 mnist = tf.keras.datasets.mnist # 获取预置的mnist手写数据集 (x_train, y_train),(x_test, y_test) = mnist.load_data() # 获取预先划分好的训练集,测试集 x_train, x_test = x_train / 255.0, x_test / 255.0 # 对图片像素进行规范化 从[0,255]规整为[0,1] # 创建一个训练模型 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), # 输入层规定输入图片尺寸为28px × 28px tf.keras.layers.Dense(512, activation=tf.nn.relu),# 第一层神经元个数为512 使用relu作为激活函数 tf.keras.layers.Dense(1024, activation=tf.nn.relu),# 第二层神经元个数为1024 同样使用relu作为激活函数 tf.keras.layers.Dropout(0.2), # 随机失活层防止过拟合 tf.keras.layers.Dense(10, activation=tf.nn.softmax) # 输出层 使用softmax激活函数进行分类 ]) # 使用adam为优化器,sparse_categorical_crossentropy为loss计算函数 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 开始训练,进行100层迭代 model.fit(x_train, y_train, epochs=100) # 使用测试数据集进行模型准确度评估 model.evaluate(x_test, y_test)
|
训练集的样本个数为60000,测试用样本个数为10000,训练进行时会有如下输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| Epoch 87/100 60000/60000 [==============================] - 10s 174us/sample - loss: 0.0102 - acc: 0.9987 Epoch 88/100 60000/60000 [==============================] - 11s 175us/sample - loss: 0.0117 - acc: 0.9987 Epoch 89/100 60000/60000 [==============================] - 11s 180us/sample - loss: 0.0192 - acc: 0.9981 Epoch 90/100 60000/60000 [==============================] - 11s 178us/sample - loss: 0.0128 - acc: 0.9987 Epoch 91/100 60000/60000 [==============================] - 10s 174us/sample - loss: 0.0156 - acc: 0.9985 Epoch 92/100 60000/60000 [==============================] - 11s 180us/sample - loss: 0.0128 - acc: 0.9988 Epoch 93/100 60000/60000 [==============================] - 10s 172us/sample - loss: 0.0212 - acc: 0.9984 Epoch 94/100 60000/60000 [==============================] - 11s 185us/sample - loss: 0.0137 - acc: 0.9986 Epoch 95/100 60000/60000 [==============================] - 11s 177us/sample - loss: 0.0161 - acc: 0.9987 Epoch 96/100 60000/60000 [==============================] - 11s 179us/sample - loss: 0.0113 - acc: 0.9989 Epoch 97/100 60000/60000 [==============================] - 11s 180us/sample - loss: 0.0181 - acc: 0.9986 Epoch 98/100 60000/60000 [==============================] - 10s 169us/sample - loss: 0.0148 - acc: 0.9986 Epoch 99/100 60000/60000 [==============================] - 11s 177us/sample - loss: 0.0140 - acc: 0.9989 Epoch 100/100 60000/60000 [==============================] - 11s 179us/sample - loss: 0.0207 - acc: 0.9984
|
loss值和acc一般成反比,可以看出每一次迭代后模型对自己的评估。
然而这样的评估不一定准确,需要使用不参与训练的测试数据集进行评估。
1
| 10000/10000 [==============================] - 1s 53us/sample - loss: 0.6206 - acc: 0.9807
|
10000个测试样本的准确率为 98%,可以证明这个模型可以很好的区分手写数字了。