1.TensorFlow初识

1.TensorFlow的基本知识

    Python的中计算可以借助外部的工具,如numpy,但是再切回Python需要花销,所以在TensorFlow中是先把一系列的计算定义出来,然后再统一的再Python之外运行。

    TensorFlow中有符号变量 tf.placeholder() 和其他的变量 tf.Variables();占位符的shape变量有利于找到因输入数据的维度不一致导致的错误;模型的参数一般用tf.Variables()来表示;feed_dict可以用来代替任何的tensor,并不局限于占位符; 

strides=[1, 1, 1, 1]

    上面的strides 表示的是一个一维的张量,前后必须为1,中间的分别控制水平和垂直方向的滑动步长

    在训练网络的过程中,模型的参数是要初始化,但是在训练的时候,多次进行训练过程时,已经不再涉及模型参数的初始化了,而是直接使用模型中正在更新的参数。在训练中的测试以及在验证集上测试时,只是feed_dict的数据不一样而已,只要定义好评价的方式就好了。

    在交互式的环境下,可以先定义回话,再为会话指定操作,即用tf.InteractivateSession(),而使用tf.Session()必须先把需要的操作计算图定义好然后在说明会话,在交互式的情况下很不方便;同样tf.session()有with ...as ....的形式,可以自己关闭会话,而交互式的就没有。

    在tenTensorFlow中,每个Tensor都是一个多维化的数组,在Python中为numpy ndarray,与numpy中的数组(ndarray)一致,所以在进行计算的时候,二者可以直接进行计算,如在评价loss的时候,外部的label是numpy数组的形式,但是也可以直接进行二者的计算在Python的环境中。只要数据的类型一致(如np.int32,tf.int32),那么二者之间是可以直接做四则运算的,但是结果必须得以sess.run()或者c.eval()的方式输出,不然结果只是一个Tensor。

    TensorFlow在进行训练的时候,为什么不会使用模型的参数初始化的值,因为模型参数是一个op,那么反应在图中就是一个节点,初始化的时候只是把一个初始的值传递给这个节点,在训练的过程中回动态的传递学习的到值,所以在下一次进行session会话操作的时候,这个时候这个节点中模型的参数值已经是更新之后的值了,所以并不会使用初始化的值,也就是为什么模型在恢复的时候只能使用最后保存时候的值。

    tf.assign(a,b)函数可以用来专门为一个节点的值进行更新操作。

    在定义的计算图中,每个节点的值都是可以取回的,当要取回多个值时,需要采用sess.run([a,b])的形式,这样得到的结果,是一个具体的数,而不是Tensor,确切的说,应该是一个numpy的数组 。

    feed其实是为tf.placeholder()提供输入的值,在具体的情况需要对占位符指定shape,精度类型,还有名字类的属性。feed_dict={, , ,}

 

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值