人工智能小白日记之4 tensorflow篇
关于tensorflow
学习资料:https://tensorflow.google.cn
TensorFlow™ 是一个开放源代码软件库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)。TensorFlow™ 最初是由 Google Brain 团队(隶属于 Google 的 AI 部门)中的研究人员和工程师开发的,可为机器学习和深度学习提供强力支持,并且其灵活的数值计算核心广泛应用于许多其他科学领域。
另外发现其现在已对web添加支持,tensorflow.js已发布
1 tensorflow安装
我暂时用mac笔记本跑一下,免得换来换去。macOS 10.12.6 或更高版本都可以得到支持,但是不支持GPU。所以我们下载一个CPU版本的就好。(关于GPU和CPU的问题小伙伴们可以自行查阅下)
接下来开始tensorflow趟坑之旅了。
前面如果你安装了python,会自带pip,执行命令
pip3 --version
pip 18.1 from /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-
packages/pip (python 3.7)
安装tensorflow
pip3 install --user --upgrade tensorflow
wtf?报错了。找不到对应版本。查阅了一下网上的资料,据说这货跟python的版本有点关系。看了一下官方文档:
好吧好吧,3.7版本太高了么,重新安装3.6版本。然后mac这里需要修改一下默认版本
vi .bash_profile 进入编辑模式,最后一行添加
alias python="/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6"
OK,继续安装tensorflow,官方推荐是利用virtualenv创建虚拟空间,单独安装。我们直接先全局装一个试试
pip3 install --user --upgrade tensorflow
开始下载了,有木有。?
官方提示,直接安装将被安装到 $HOME下,其实是在Requirement already up-to-date: tensorflow in ./Library/Python/3.6/lib/python/site-packages (1.12.0)
然后运行测试代码
python3 -c "import tensorflow as tf; tf.enable_eager_execution();
print(tf.reduce_sum(tf.random_normal([1000, 1000])))"
…一种不妙的感觉油然而生。
这里给出了一个提示,最后又打印了结果。查了一下这是一个警告:“CPU支持AVX2和FMA扩展,然而tensorflow的版本无法编译使用”。相关资料:https://blog.csdn.net/hq86937375/article/details/79696023
为了尽可能利用计算机性能,肯定要选择第二种解决方案,针对cpu选择一个优化的tensorflow源进行编译。
这里简单利用第一方案,忽略该提示,更新代码:
python3 -c "import os;
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2';import tensorflow as tf;
tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000,
1000])))"
OK,tensorflow就简单测试通过了。
2 tensorflow入门级应用helloworld
好了,水过了安装部分,接下来开始正式的学习了。
教程的后面部分,直接为我们介绍了Keras ,这是一个用于构建和训练深度学习模型的高阶 API。
2-1 初学者实例水过
先查看初学者实例:
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
好吧,看不懂?。貌似先下载训练数据和测试用数据,然后利用keras创建了一个model,然后分别对model进行了compile,fit,evaluate等动作。
看不懂就跑一下,别告诉我不会跑啊,自己创建一个.py文件,复制代码,python3 xxx.py就可以运行了。
cddeMacBook-Air:~ cd$ python3
/Users/cd/Downloads/AI/test.py
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
...
Exception: URL fetch failure on https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz:
None -- [Errno 60] Operation timed out
貌似下载数据的时候失败了,连接超时。泪奔,算了跳过。
2-2 TensorFlow Keras 指南
按照提示来到 TensorFlow Keras 指南。Keras 是一个用于构建和训练深度学习模型的高阶 API。它可用于快速设计原型、高级研究和生产。(概念上还是挺模糊的,毕竟咱不知道deep learning研究的是些啥)
不过从右边的目录来看,我们大概知道这篇指南将要介绍些,什么。
拿刚才的代码做对比,大概可以了解到就是利用keras,建模,训练模型,评估合格后,再进行使用,比如预测。我们大胆设想一下,一个图片识别的程序,就是通过这几个步骤,最后达到精准识别的目的。所以这个指南的目标是带我们感受一下,人工智能应用的生产流程,也就是它是怎么造出来的。
2-2-1 Keras 模型训练
根据刚才说的步骤,建模,训练模型,评估合格后,再进行使用。教程中一一给了说明。我这里直接给最终综合版:
import tensorflow as tf
from tensorflow.keras import layers
print(tf.VERSION)
print(tf.keras.__version__)
#建模
model = tf.keras.Sequential()
# Adds a densely-connected layer with 64 units to the model:
model.add(layers.Dense(64, activation='relu'))
# Add another:
model.add(layers.Dense(64, activation='relu'))
# Add a softmax layer with 10 output units:
model.add(layers.Dense(10, activation='softmax'))
#调用 compile 方法配置该模型的学习流程
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])
#使用 fit 方法使模型与训练数据“拟合”,即开始训练
import numpy as np
data = np.random.random((1000, 32))
labels = np.random.random((1000, 10))
model.fit(data, labels, epochs=10, batch_size=32)
#evaluate评估所提供数据的推理模式损失和指标
model.evaluate(data, labels, batch_size=32)
#利用训练好的model进行预测
result = model.predict(data, batch_size=32)
print(result.shape)
这样算是helloworld 吗,应该算吧。后面的内容暂时略去,保留最简单的部分,但是这个helloworld太抽象了,貌似还是不太明白,先记住这个处理流程。
3 小结
这节了解tensorflow在python中是如何使用的,其实就是一个内裤对吧,至于为啥看完还是抽象,是因为它的定位是一个框架。框架代表着简单方便,细节隐藏。
为了对AI有更深的了解,我们要参考官方给的,学习和使用机器学习。留到下一节。