人工智能小白日记之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有更深的了解,我们要参考官方给的,学习和使用机器学习。留到下一节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值