从零开始学TensorFlow

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

TensorFlow logo

最近在学习TensorFlow的相关知识,了解了TensorFlow一些基础的知识,现在周末有空了,就写写一些笔记,记录一下自己的成长~

总的来说,TensorFlow还是一个比较新的技术,有兴趣的同学不妨跟着我的笔记,一起学学呗(反正没坏处)~

前面回顾:

知识背景:没有Python基础,没有机器学习基础,可以说是真正从零学TensorFlow的了。

一、安装Tensorflow所需要的环境 1.1安装Python环境

使用环境:Mac

Python有好多个版本,在Mac中自带的Python版本是2.7,但相对而言比较老了。现在一般用Python3.x了,本次下载的版本是3.5.6

我安装Python所使用方法的大致步骤:

安装Homebrew

安装pyenv

在.bash_profile添加环境变量

让环境变量生效

安装3.X版本python

详情可参考如下的链接(总的来说,我根据下面的教程一下子就安装了我想要的Python版本,还是非常不错的。):

Mac下安装多版本python:

https://www.cnblogs.com/webgiser/p/7463974.html

pyenv相关的命令(常用的pyenv命令):

https://www.jianshu.com/p/af1f8d7b6b31

在安装Python的时候也发现了一个小知识点:

Mac一般使用bash作为默认的shell,会有好几个环境变量,其中etc/profile是系统级的,还有几个用户级别的环境变量,比如说:~/.bash_profile

如果修改的是系统级别的环境变量,也就是etc/profile,在保存的时候只能是:wq!覆盖,不然会出现readonly错误

(至于TensorFlow和numpy依赖的下载,这里我就不说了,就两条命令就搞掂啦)

1.2PyCharm编辑器

Java有IDEA神器,同样的,Python也有PyCharm,同样是JetBrains出产的。

我在之前从来没使用过PyCharm,也没写过一句的Python代码。

把Pycharm安装好了之后,我想当然就new project去用了,然后就next,next,next,当成IDEA来用。但发现了一个问题:我在之前明明装好了TensorFlow和numpy的依赖,在PyCharm环境下却识别不出来!在命令行窗口下,依赖是存在的!

后来才发现:如果用PyCharm去new一个project,会默认建一个解析器在当前的项目目录下。而PyCharm会遵守“就近原则”使用当前项目路径下的解析器。而我们添加的依赖(TensorFlow、numpy)是在我们安装Python的路径下的,这就导致了在命令行下找到依赖,而在PyCharm中找不到依赖。

解决也很简单:在PyCharm指定一下我们安装Python的路径,切换一下就好了。

参考资料:

关于pip安装第三方库,但pycharm中却无法识别的问题;以及pycharm安装第三方库的方法解析

https://blog.csdn.net/weixin_41287260/article/details/83957731

二、体验TensorFlow

好的,我们现在已经安装好TensorFlow所需要的环境了!(看起来好简单,但还是花了我不少时间....)

官网的Demo链接(需要科学上网):

https://www.tensorflow.org/tutorials/keras/basic_classification

首先我们来看一下这个例子可以干些什么:我们有非常多张的图片(数据集),这些图片有不同的类型(比如衣服、鞋子、裤子,一共有10种类型),把这些数据集扔进我们的神经网络里头,生成出模型。有了模型以后,当我们再将类似的图片扔进去,这个模型可以帮我们预测这张图片是衣服还是鞋子还是裤子。

数据集

随后,我跟着官网的代码跑了一(代码我都只是一步一步复制粘贴),最后跑起来:

# TensorFlow and tf.keras import tensorflow as tf from tensorflow import keras # Helper libraries import numpy as np print(tf.__version__) # 加载数据、区分出测试数据和训练数据 # 注意:如果已经下过,重复下载的话,可能会出现EOFError: Compressed file ended before the end-of-stream marker was reached错误 fashion_mnist = keras.datasets.fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() # 分类的列表 class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] # 查看数据的值 print(train_images.shape) # 样本的shape(可以看出有多少条样本、维度) print(len(train_labels)) # label的个数,有多少个样本,就应该有多少个label print(train_labels) # label的值,对应上面分类列表(从0到9) # 对测试数据和训练数据进行预处理(实际上就是归一化) train_images = train_images / 255.0 test_images = test_images / 255.0 # 设置层 (初始处理)--- 建立神经层 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation=tf.nn.relu), keras.layers.Dense(10, activation=tf.nn.softmax) ]) # 损失函数、优化器、指标 model.compile(optimizer=tf.train.AdamOptimizer(), loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 将训练集丢进去,训练出模型(Model) model.fit(train_images, train_labels, epochs=5) # 将测试数据丢到模型中,评估一下得分(准确率) test_loss, test_acc = model.evaluate(test_images, test_labels) print('Test accuracy:', test_acc) # 评估完准确率以后,我们可以对测试数据进行预测 predictions = model.predict(test_images) # 选第一个样本预测后的得出最有可能结果 print(np.argmax(predictions[0])) # 对比结果 print(test_labels[0])

跑出来的结果:

(后期注释:这是TensorFlow的版本)

1.12.0

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygddj.html