TensorFlow学习笔记(二)

TensorFlow笔记二

@Author:LF
@Date:2017-12-26

一、数据结构——张量

TensorFlow由Tensor和flow组成。Tensor即张量,是框架中的数据结构。张量可以理解成多维数组,个人理解成和基本数据类型没有什么不同。而flow就是它的计算类型,是以流的形式。因为TensorFlow的基本计算模型是图,图中由节点和边构成,而节点即是张量,边则是计算过程。具体如图。
图中ABCD节点就是数据节点,其结构是张量。节点之间由边连接,边即是运算。即A和B运算得到C,C运算得到D。下面通过一个例子来直观的了解张量是啥。

import tensorflow as tf
>>> a=tf.constant([1,2],name="a")
>>> b=tf.constant([1,2,3],name="b")
>>> c=tf.constant(1,name="c")
>>> d=tf.constant([[1,2],[1,3]],name="d")
>>> e=tf.constant((1,2),name="e")
>>> g=tf.constant((1),name="g")
>>> f=tf.constant(([[1,2],[1,3]],[[1,2],[1,2]]),name="f")
>>> print(a)
Tensor("a_1:0", shape=(2,), dtype=int32)
>>> print(b)
Tensor("b:0", shape=(3,), dtype=int32)
>>> print(c)
Tensor("c:0", shape=(), dtype=int32)
>>> print(d)
Tensor("d:0", shape=(2, 2), dtype=int32)
>>> print(e)
Tensor("e:0", shape=(2,), dtype=int32)
>>> print(g)
Tensor("g:0", shape=(), dtype=int32)
>>> print (d)
Tensor("f:0", shape=(2, 2, 2), dtype=int32)

我尝试定义了abcdefg七个不同值得变量分别是[1,2]、[1,2,3]、1、[[1,2],[1,3]]、(1,2)、(1)、([[1,2],[1,3]],[[1,2],[1,2]]),采用列表或者元组的形式,其实就是想搞清楚张量的维度是怎么算的。其实通过输出可以发现,以([[1,2],[1,3]],[[1,2],[1,2]])为例,最外面的维度包含两个数据为[[1,2],[1,3]]、[[1,2],[1,2]],往内一个维度也包含两个数据分别为[1,2]、[1,3]和[1,2]、[1,2],再往里一个维度也包含两个数,分别是1、2和1、3和1、2和1、2,以此类推就是张量的数据结构,其具有三个属性:名称、维度、类型。
值得一提的是,tensorflow中运算结果是以张量的形式展现,而不是直接的数字结果(在没有使用session对它进行运行时)。

>>> result=a+c
>>> print(result)
Tensor("add_1:0", shape=(2,), dtype=int32)
>>> sess=tf.Session()
2017-12-26 22:09:32.916994: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
>>> print(sess.run(result))
[2 3]

可以看出,result作为a与c进行add后的结果仍然是一个张量。而Session是什么呢?Session可以看成一个运行函数,把result(result=a+c)扔进Session里进行函数计算,得出最终结果([1,2]+1=[2,3] ps:= =嗯,应该是这样。。。)输出[2,3],没毛病。

二、初识神经网络

如图所示即是一个简单的神经网络(来自于Google官方的TensorFlow游乐场,网址:http://playground.tensorflow.org )用来作分类问题。
(图片1)
图中最左边即是输入层,最右边是输出层,中间则是隐藏层。将这个神经网络和实际问题对应则是将实际问题中的输入数据抽象或取特征向量。经过中间隐藏层的运算得到结果,任意层中数据不互相连接。所以这也就说明了使用神经网络解决问题的步骤大致是:首先提取实体的特征向量作为输入,定义神经网络(即隐藏层)。在隐藏层中会有很多的参数,通过训练来调整参数的取值,得到一个较为准确的神经网络,通过训练好的神经网络来预测数据。

三、总结

今天主要布置好了环境加上tensorflow的再一次的简单认识吧,至少学会了tensorflow的数据类型大概是个啥样的,并且对于神经网络的概念有了一个直观的认识,能够在脑海中感受到tensorflow的影子。后面还会学到前向传播算法以及激活函数的去线性化等等,应该挺刺激的。同时,在布置环境的同时也逐渐对Linux系统更加熟悉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值