莫烦教我学tensorflow

xiaoxiao2021-02-28  6

1.TensorFlow是采用数据流图(data flow graphs)来计算, 所以首先我们得创建一个数据流流图, 然后再将我们的数据(数据以张量(tensor)的形式存在)放在数据流图中计算. 节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组, 即张量(tensor). 训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点, 这就是TensorFlow名字的由来.

2.

张量(Tensor):

张量有多种. 零阶张量为 纯量或标量 (scalar) 也就是一个数值. 比如 [1]一阶张量为 向量 (vector), 比如 一维的 [1, 2, 3]二阶张量为 矩阵 (matrix), 比如 二维的 [[1, 2, 3],[4, 5, 6],[7, 8, 9]]以此类推, 还有 三阶 三维的 …

3.用session激活应该不用多提了,前面已经讲过了

4.

在 Tensorflow 中,定义了某字符串是变量,它才是变量,这一点是与 Python 所不同的。

定义语法: state = tf.Variable()

 

Tensorflow 中设定了变量,那么初始化变量是最重要的!!所以定义了变量以后, 一定要定义 init = tf.initialize_all_variables() .

到这里变量还是没有被激活,需要再在 sess 里, sess.run(init) , 激活 init 这一步.

 

5.Tensorflow 如果想要从外部传入data, 那就需要用到 tf.placeholder(), 然后以这种形式传输数据 sess.run(***, feed_dict={input: **}).

 

6.TensorFlow的可视化工具 — tensorboard ,但是要在google浏览器下,所以...

7.good thinking

途径一

我们观察到这些文字描述不超过几个类别, 比如在 buying 下面, 总共也就这几种情况 (vhigh, high, med, low), 那我们能不能直接将每种情况给它一个数字代替呢? 比如 (vhigh=0, high=1, med=2, low=3).

途径二

同样是类别, 如果你听说过那个手写数字 MNIST 的数据集 (可以看看这个教程), 你会发现, 0/1/2/3/4/5/6/7/8/9 这十个数字不是直传入神经网络, 而是进行了一次 onehot 的处理. 也就是将数字变成只有 0/1 的形式, 比如下面:

0 -> [1,0,0,0,0,0,0,0,0,0]1 -> [0,1,0,0,0,0,0,0,0,0]2 -> [0,0,1,0,0,0,0,0,0,0]…9 -> [0,0,0,0,0,0,0,0,0,1]

转换的途径一般有这两种, 那我们选哪个? 途径一非常简单, 不同的类别变成不同的数字, 但是试想这样的情况, 如果现在是红色, 蓝色, 黄色这三个类别需要转换, 如果红色=0, 蓝色=1, 黄色=2, 红色到蓝色差了1, 红色到黄色差了2, 但是在真实的世界中, 各种颜色之间真的有数量差? 红色到蓝色的差别真的比红色到黄色大? 显然不是, 所以这样的类别转换数字的途径还是存在一定的问题.

而途径二, 我们如果转换成 onehot 形式, 红黄蓝它们就没有这种距离上的差距概念, 而是每个类别都是独立, 特别的, 不能互相比较的. 这才是比较好的类别转换形式. 我觉得有必要提的是, 像(vhigh=0, high=1, med=2, low=3)这样的类别, 可能还是存在一些从高到底的顺序, 这样的类别, 理论上也是可以使用途径一. 大家到了最后可以测试一下途径一和途径二的差别. 这个实战练习, 我是基于途径二的转换.

预处理的数据onehot

 

def convert2onehot(data): # covert data to onehot representation return pd.get_dummies(data, prefix=data.columns)

如果对你有所帮助,谢谢您的鼓励^_^

红包还不收?

转载请注明原文地址: https://www.6miu.com/read-1900181.html

最新回复(0)