目录
深度学习(机器学习)入门 手写数字的识别
一. Tensorflow环境的安装
使用 Anaconda 进行安装
a.安装 Anaconda
链接:链接: https://pan.baidu.com/s/1UZdAQm02adB0keTe_mQB3g 提取码: 302e
Anaconda傻瓜安装,一直下一步就行了
b.打开Anaconda prompt
以管理员的身份打开终端
按照以下步骤在 Anaconda 环境中安装 tensorFlow:
通过调用以下命令创建名为 tensorflow 的 conda 环境:
conda create -n tensorflow pip python=3.5
通过发出以下命令激活 conda 环境:
activate tensorflow
发出相应命令以在 conda 环境中安装 TensorFlow。要安装仅支持 CPU 的 TensorFlow 版本,请输入以下命令:
pip install --ignore-installed --upgrade tensorflow
c.测试tensorflow的安装
以管理员身份打开 Anaconda prompt 终端。
如果您是通过 Anaconda 进行安装,请激活您的 Anaconda 环境。
然后再输入python
在 Python 交互式 shell 中输入以下几行简短的程序代码:
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
如果系统输出以下内容,说明您可以开始编写 TensorFlow 程序了:
Hello, TensorFlow!
可能会出现的问题和解决方案
1.Anaconda prompt 中可以import tensorflow 但是 jupyter不行
原因是tensorflow加入在了虚拟内核中,而在 jupyter 中用的不是这个虚拟内核,所以:
在jupyter notebook 添加 python内核(windows)
- 激活虚拟环境
activate tensorflow
- 为python安装ipykernel
-
使用pip安装:
pip install ipykernel
-
也可以使用anaconda的方法:
conda install ipykernel
- 安装 ipykernel
pip install ipykernel
- 通过ipykernel为jupyter添加python2.7环境
python -m ipykernel install --name tensorflow
- 查看内核(可以不做)
jupyter kernelspec list
- 删除内核(可以不做)
jupyter kernelspec remove name
二. 安装 Keras
将anaconda里面各个包未更新到最新
以管理员的身份打开Anaconda终端
conda update conda
conda update --all
激活tensorflow环境
activate tensorflow
安装Keras
pip install keras
下载数据集
使用 MNIST 数据集点击链接进入下载(相关使用说明也在其中)
导入 MNIST 数据集
Keras 默认从 googleapis 下载 MNIST,如果无法访问,可以下载到本地后更改 mnist.py
中的引用路径。
TensorFlow 中存在多个 mnist.py
,这里我们需要修改的是 Keras 下的,我的路径为
D:\Anaconda\envs\tensorflow\Lib\site-packages\tensorflow\python\keras\datasets
打开之后,把
origin_folder = 'https://storage.googleapis.com/tensorflow/tf-keras-datasets/'
中的路径修改为你存放数据集的位置即可。
这里可以使用将 mnist.py 文件拖动到空白的浏览器网址部分得到格式正确的地址[外链图片转存失败(img-Y0CYhgGu-1569327338782)(C:\Users\72451\AppData\Roaming\Typora\typora-user-images\1569326549298.png)]
使用模型
参考机器学习入坑指南
直接给出可以运行的代码
import tensorflow as tf # 深度学习库,Tensor 就是多维数组
mnist = tf.keras.datasets.mnist # mnist 是 28x28 的手写数字图片和对应标签的数据集
(x_train, y_train),(x_test, y_test) = mnist.load_data() # 分割数据集
x_train = tf.keras.utils.normalize(x_train, axis=1) # 把数据值缩放到 0 到 1
x_test = tf.keras.utils.normalize(x_test, axis=1)
model = tf.keras.models.Sequential() # 基础的前馈神经网络模型
model.add(tf.keras.layers.Flatten()) # 把图片展平成 1x784
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu)) # 简单的全连接图层,,128 个单元,激活函数为 relu
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax)) # 输出层 ,10 个单元, 使用 Softmax 获得概率分布
model.compile(optimizer='adam', # 默认的较好的优化器
loss='sparse_categorical_crossentropy', # 评估“错误”的损失函数,模型应该尽量降低损失
metrics=['accuracy']) # 评价指标
model.fit(x_train, y_train, epochs=3) # 训练模型
val_loss, val_acc = model.evaluate(x_test, y_test) # 评估模型对样本数据的输出结果
print(val_loss) # 模型的损失值
print(val_acc) # 模型的准确度