基于tensorflow for循环 while循环案例_python

来源:脚本之家  责任编辑:小易  

python环境:win10 64下anaconda4.2.0(python3.5)。安装tensorflow过程是在Anaconda Prompt中进行安装1:打开Anaconda Prompt  在安装之前,说几个关于conda的小命令  conda list:可以显示已经安装好的库。  conda install 库名 :可以直接安装想要的库。如:conda install tensorflow  conda update 库名:升级库  在Anaconda Navigator的Environments中就可以直接显示已经安装的库和未安装的,也可以进行库的升级以及安装新的库。       倘若上述方法在你的电脑安装不成功,可以采取下面的方式进行指定安装。 2.首先,我直接输入conda install tensorflow出现错误(不知为何)。3.然后根据提示输入:anaconda search -t conda tensorflow这里(anaconda search -t conda 库名)可以选择自己安装的源可以看出tensorflow这个库大部分版本是安装在linux上的!只有2个可以在win64上安装!4.输入:anaconda show conda-forge/tensorflow也可以输入:anaconda show dhirschfeld/tensorflow安装另外一个源(本人最初安装时就是安装的这个,结果出现错误,所以安装的上一个!安装完后再安装第一个发现又可以安装了,不过没装,毕竟已经安装过一个了)。5.根据最后一行提示输入:conda install --channel https://conda.anaconda.org/conda-forge tensorflow6.上一步最后Proceed ([y]/n)?后面输入y回车7,至此已经安装成功,输入:conda list 可以看出已安装www.zgxue.com防采集请勿采集本网。

我就废话不多说了,大家还是直接看代码吧~

做人,不能总是为自己着想,处事,不能看不起人,学会做人容易,但是做一个好人很难。人生路上,总有很多孤独,也有很多无奈,失去的,未必回来,但是现在的,一定会因为未来改变。

import tensorflow as tfn1 = tf.constant(2)n2 = tf.constant(3)n3 = tf.constant(4)def cond1(i, a, b): return i < n1def cond2(i, a, b): return i < n2def cond3(i, a, b): return i < n3def body(i, a, b): return i + 1, b, a + bi1, a1, b1 = tf.while_loop(cond1, body, (2, 1, 1))i2, a2, b2 = tf.while_loop(cond2, body, (2, 1, 1))i3, a3, b3 = tf.while_loop(cond3, body, (2, 1, 1))sess = tf.Session()print(sess.run(i1))print(sess.run(a1))print(sess.run(b1))print("-")print(sess.run(i2))print(sess.run(a2))print(sess.run(b2))print("-")print(sess.run(i3))print(sess.run(a3))print(sess.run(b3))

在2017年3月2号之前,全局变量初始化用的是initialize_all_variables() 而在2017-03-02之后需要使用tf.global_variables_initializer()

print结果:

不能放大,看不清红字的内容啊

211-312-423

1:TensorFlow可以支持CPU+GPU一起进行深度学习处理。 2:实际运行的效果得看你的处理器及计算卡的性能(计算能力)怎么样了。

可见body函数返回的三个变量又传给了body

python 3.7版本目前和tensorflow兼容性不是很好,推荐使用: python 3.6 + tensorflow-gpu 1.12 + CUDA 9.0 + CUDNN 7.3.0

补充知识:tensorflow在tf.while_loop循环(非一般循环)中使用操纵变量该怎么做

因为tensorflow是基于图来计算的。也就是说,你写的每一行程序,就是一个op,整个程序在run之前都只是在定义你要执行的什么操作,placeholder其实就是把你要输入的数据提前写

代码(操纵全局变量)

可以打开腾讯电脑管家-工具箱-软件管理-在软件管理中搜索名称就可以看到下载资源,根据需要进行操作即可。

xiaojie=1i=tf.constant(0,dtype=tf.int32)batch_len=tf.constant(10,dtype=tf.int32)loop_cond = lambda a,b: tf.less(a,batch_len)#yy=tf.Print(batch_len,[batch_len],"batch_len:")yy=tf.constant(0)loop_vars=[i,yy]def _recurrence(i,yy): c=tf.constant(2,dtype=tf.int32) x=tf.multiply(i,c) global xiaojie xiaojie=xiaojie+1 print_info=tf.Print(x,[x],"x:") yy=yy+print_info i=tf.add(i,1)# print (xiaojie) return i,yyi,yy=tf.while_loop(loop_cond,_recurrence,loop_vars,parallel_iterations=1)#可以批处理sess = tf.Session()print (sess.run(i))print (xiaojie)

可能是你系统中网络摄像头的设置有错误。

输出的是10和2。

placeholder而不是placeholer

也就是xiaojie只被修改了一次。

基于Anacondatensorflow安装 1 载linux版本Anaconda安装包 2 安装Anaconda 利用anaconda安装tensorflow 1 建立 conda 计算环境 2 激环境使用 conda 安装 TensorFlow 3 安装

这个时候,在_recurrence循环体中添加语句

官网可以查询售后维修价格建议联系官方申请售后,走正规维修渠道

print (xiaojie)

界面显示的语言没法修改,这是系统环境决定的。 网页显示语言可以到选项》中级用户选项》字体和语言来修改网页显示语言 系统内核肯定是用C写成的,有一些架构相关的部

会输出2。而且只输出一次。具体为什么,最后总结的时候再解释。

在pycharm找到file点击settings选择  Project interpreter中的 PYthon 3.5在右上框中选择有TensorFlow的python包,添加就可以使用了

代码(操纵类成员变量)class RNN_Model():

J_pyc 【tensorFlow】tf.reshape()报错信息 - TypeError: Expected binary or unicode string TypeError: Failed to convert object of type <class 'list'> to Tensor. Con

def __init__(self): self.xiaojie=1 def test_RNN(self): i=tf.constant(0,dtype=tf.int32) batch_len=tf.constant(10,dtype=tf.int32) loop_cond = lambda a,b: tf.less(a,batch_len) #yy=tf.Print(batch_len,[batch_len],"batch_len:") yy=tf.constant(0) loop_vars=[i,yy] def _recurrence(i,yy): c=tf.constant(2,dtype=tf.int32) x=tf.multiply(i,c) self.xiaojie=self.xiaojie+1 print_info=tf.Print(x,[x],"x:") yy=yy+print_info i=tf.add(i,1)        print ("_recurrence:",self.xiaojie) return i,yy i,yy=tf.while_loop(loop_cond,_recurrence,loop_vars,parallel_iterations=1)#可以批处理 sess = tf.Session() sess.run(yy) print (self.xiaojie)if __name__ == "__main__": model = RNN_Model()#构建树,并且构建词典 model.test_RNN()

输出是:

_recurrence: 2102

tf.while_loop操纵全局变量和类成员变量总结

为什么_recurrence中定义的print操作只执行一次呢,这是因为_recurrence中的print相当于一种对代码的定义,直接在定义的过程中就执行了。所以,可以看到输出是在sess.run之前的。但是,定义的其它操作就是数据流图中的操作,需要在sess.run中执行。

就必须在sess.run中执行。但是,全局变量xiaojie也好,还是类成员变量xiaojie也好。其都不是图中的内容。因此,tf.while_loop执行的是tensorflow计算图中的循环,对于不是在计算图中的,就不会参与循环。注意:而且必须是与loop_vars中指定的变量存在数据依赖关系的tensor才可以!此外,即使是依赖关系,也必须是_recurrence循环体中return出的变量,才会真正的变化。比如,见下面的self.L。总之,想操纵变量,就要传入loop_vars!

如果对一个变量没有修改,就可以直接在循环中以操纵类成员变量或者全局变量的方式只读。

self.L与loop_vars中变量有依赖关系,但是并没有真正被修改。

#IIII通过计算将非叶子节点的词向量也放入nodes_tensor中。 iiii=tf.constant(0,dtype=tf.int32) loop____cond = lambda a,b,c,d,e: tf.less(a,self.sentence_length-1)#iiii的范围是0到sl-2。注意,不包括sl-1。这是因为只需要计算sentence_length-1次,就能构建出一颗树 loop____vars=[iiii,columnLinesOfL,node_tensors_cost_tensor,nodes_tensor,tfPrint] def ____recurrence(iiii,columnLinesOfL,node_tensors_cost_tensor,nodes_tensor,tfPrint):#循环的目的是实现Greedy算法 ### #Greedy的主要目标就是确立树结构。 ### c1 = self.L[:,0:columnLinesOfL-1]#这段代码是从RvNN的matlab的源码中复制过来的,但是Matlab的下标是从1开始,并且Matlab中1:2就是1和2,而python中1:2表示的是1,不包括2,所以,有很大的不同。 c2 = self.L[:,1:columnLinesOfL] c=tf.concat([c1,c2],axis=0) p=tf.tanh(tf.matmul(self.W1,c)+tf.tile(self.b1,[1,columnLinesOfL-1])) p_normalization=self.normalization(p) y=tf.tanh(tf.matmul(self.U,p_normalization)+tf.tile(self.bs,[1,columnLinesOfL-1]))#根据Matlab中的源码来的,即重构后,也有一个激活的过程。 #将Y矩阵拆分成上下部分之后,再分别进行标准化。 columnlines_y=columnLinesOfL-1 (y1,y2)=self.split_by_row(y,columnlines_y) y1_normalization=self.normalization(y1) y2_normalization=self.normalization(y2) #论文中提出一种计算重构误差时要考虑的权重信息。具体见论文,这里暂时不实现。 #这个权重是可以修改的。 alpha_cat=1 bcat=1 #计算重构误差矩阵## constant1=tf.constant([[1.0,2.0,3.0],[4.0,5.0,6.0],[7.0,8.0,9.0]])## constant2=tf.constant([[1.0,2.0,3.0],[1.0,4.0,2.0],[1.0,6.0,1.0]])## constructionErrorMatrix=self.constructionError(constant1,constant2,alpha_cat,bcat) y1c1=tf.subtract(y1_normalization,c1) y2c2=tf.subtract(y2_normalization,c2) constructionErrorMatrix=self.constructionError(y1c1,y2c2,alpha_cat,bcat)################################################################################ print_info=tf.Print(iiii,[iiii],"\niiii:")#专门为了调试用,输出相关信息。 tfPrint=print_info+tfPrint print_info=tf.Print(columnLinesOfL,[columnLinesOfL],"\nbefore modify. columnLinesOfL:")#专门为了调试用,输出相关信息。 tfPrint=print_info+tfPrint print_info=tf.Print(constructionErrorMatrix,[constructionErrorMatrix],"\nbefore modify. constructionErrorMatrix:",summarize=100)#专门为了调试用,输出相关信息。 tfPrint=tf.to_int32(print_info[0])+tfPrint#一种不断输出tf.Print的方式,注意tf.Print的返回值。################################################################################ J_minpos=tf.to_int32(tf.argmin(constructionErrorMatrix))#如果不转换的话,下面调用delete_one_column中,会调用tf.slice,之后tf.slice的参数中的类型必须是一样的。 J_min=constructionErrorMatrix[J_minpos] #一共要进行sl-1次循环。因为是从sl个叶子节点,两两结合sl-1次,才能形成一颗完整的树,而且是采用Greedy的方式。 #所以,需要为下次循环做准备。 #第一步,从该sentence的词向量矩阵中删除第J_minpos+1列,因为第J_minpos和第J_minpos+1列对应的单词要合并为一个新的节点,这里就是修改L################################################################################ print_info=tf.Print(self.L,[self.L[0]],"\nbefore modify. L row 0:",summarize=100)#专门为了调试用,输出相关信息。 tfPrint=tf.to_int32(print_info[0][0])+tfPrint print_info=tf.Print(self.L,[tf.shape(self.L)],"\nbefore modify. L shape:")#专门为了调试用,输出相关信息。 tfPrint=tf.to_int32(print_info[0][0])+tfPrint################################################################################ deleteColumnIndex=J_minpos+1 self.L=self.delete_one_column(self.L,deleteColumnIndex,self.numlinesOfL,columnLinesOfL) columnLinesOfL=tf.subtract(columnLinesOfL,1) #列数减去1.################################################################################ print_info=tf.Print(deleteColumnIndex,[deleteColumnIndex],"\nbefore modify. deleteColumnIndex:")#专门为了调试用,输出相关信息。 tfPrint=print_info+tfPrint print_info=tf.Print(self.L,[self.L[0]],"\nafter modify. L row 0:",summarize=100)#专门为了调试用,输出相关信息。 tfPrint=tf.to_int32(print_info[0][0])+tfPrint print_info=tf.Print(self.L,[tf.shape(self.L)],"\nafter modify. L shape:")#专门为了调试用,输出相关信息。 tfPrint=tf.to_int32(print_info[0][0])+tfPrint print_info=tf.Print(columnLinesOfL,[columnLinesOfL],"\nafter modify. columnLinesOfL:")#专门为了调试用,输出相关信息。 tfPrint=print_info+tfPrint################################################################################ #第二步,将新的词向量赋值给第J_minpos列 columnTensor=p_normalization[:,J_minpos] new_column_tensor=tf.expand_dims(columnTensor,1) self.L=self.modify_one_column(self.L,new_column_tensor,J_minpos,self.numlinesOfL,columnLinesOfL) #第三步,同时将新的非叶子节点的词向量存入nodes_tensor modified_index_tensor=tf.to_int32(tf.add(iiii,self.sentence_length)) nodes_tensor=self.modify_one_column(nodes_tensor,new_column_tensor,modified_index_tensor,self.numlines_tensor,self.numcolunms_tensor) #第四步:记录合并节点的最小损失,存入node_tensors_cost_tensor J_min_tensor=tf.expand_dims(tf.expand_dims(J_min,0),1) node_tensors_cost_tensor=self.modify_one_column(node_tensors_cost_tensor,J_min_tensor,iiii,self.numlines_tensor2,self.numcolunms_tensor2) ####进入下一次循环 iiii=tf.add(iiii,1) print_info=tf.Print(J_minpos,[J_minpos,J_minpos+1],"node:")#专门为了调试用,输出相关信息。 tfPrint=tfPrint+print_info# columnLinesOfL=tf.subtract(columnLinesOfL,1) #在上面的循环体中已经执行了,没有必要再执行。 return iiii,columnLinesOfL,node_tensors_cost_tensor,nodes_tensor,tfPrint iiii,columnLinesOfL,node_tensors_cost_tensor,nodes_tensor,tfPrint=tf.while_loop(loop____cond,____recurrence,loop____vars,parallel_iterations=1) pass

上述代码是Greedy算法,递归构建神经网络树结构。

但是程序出错了,后来不断的调试,才发现self.L虽然跟循环loop____vars中的变量有依赖关系,也就是在tf.while_loop进行循环的时候,也可以输出它的值。

但是,它每一次都无法真正意义上对self.L进行修改。会发现,每一次循环结束之后,进入下一次循环时,self.L仍然没有变化。

执行结果如下:

before modify. columnLinesOfL:[31]iiii:[0]after modify. columnLinesOfL:[30]before modify. L shape:[300 31]before modify. L row 0:[0.126693 -0.013654 -0.166731 -0.13703 -0.261395 0.11459 0.016001 0.016001 0.144603 0.05588 0.171787 0.016001 1.064545 0.144603 0.130615 -0.13703 -0.261395 1.064545 -0.261395 0.144603 0.036626 1.064545 0.188871 0.201198 0.05588 0.203795 0.201198 0.03536 0.089345 0.083778 0.103635]node:[0][1]before modify. constructionErrorMatrix:[3.0431733686706206 11.391056715427794 19.652819956115856 13.713453313903868 11.625973829805879 12.827533320819564 9.7513513723204746 13.009151292890811 13.896089243289065 10.649829109971648 9.45239374745086 15.704486086921641 18.274065790781862 12.447866299915024 15.302996103637689 13.713453313903868 14.295549844738751 13.779406175789358 11.625212314259059 16.340507223201449 19.095964364689717 15.10149194936319 11.989443162329437 13.436654650354058 11.120373311110505 12.39345317975002 13.568052800712424 10.998430341124633 8.3223909323599869 6.8896857405641851]after modify. L shape:[300 30]after modify. L row 0:[0.126693 -0.166731 -0.13703 -0.261395 0.11459 0.016001 0.016001 0.144603 0.05588 0.171787 0.016001 1.064545 0.144603 0.130615 -0.13703 -0.261395 1.064545 -0.261395 0.144603 0.036626 1.064545 0.188871 0.201198 0.05588 0.203795 0.201198 0.03536 0.089345 0.083778 0.103635]before modify. deleteColumnIndex:[1]before modify. columnLinesOfL:[30]iiii:[1]before modify. L shape:[300 31]after modify. columnLinesOfL:[29]before modify. L row 0:[0.126693 -0.013654 -0.166731 -0.13703 -0.261395 0.11459 0.016001 0.016001 0.144603 0.05588 0.171787 0.016001 1.064545 0.144603 0.130615 -0.13703 -0.261395 1.064545 -0.261395 0.144603 0.036626 1.064545 0.188871 0.201198 0.05588 0.203795 0.201198 0.03536 0.089345 0.083778 0.103635]before modify. deleteColumnIndex:[1]node:[0][1]before modify. constructionErrorMatrix:[3.0431733686706206 11.391056715427794 19.652819956115856 13.713453313903868 11.625973829805879 12.827533320819564 9.7513513723204746 13.009151292890811 13.896089243289065 10.649829109971648 9.45239374745086 15.704486086921641 18.274065790781862 12.447866299915024 15.302996103637689 13.713453313903868 14.295549844738751 13.779406175789358 11.625212314259059 16.340507223201449 19.095964364689717 15.10149194936319 11.989443162329437 13.436654650354058 11.120373311110505 12.39345317975002 13.568052800712424 10.998430341124633 8.3223909323599869]after modify. L shape:[300 29]after modify. L row 0:[0.126693 -0.166731 -0.13703 -0.261395 0.11459 0.016001 0.016001 0.144603 0.05588 0.171787 0.016001 1.064545 0.144603 0.130615 -0.13703 -0.261395 1.064545 -0.261395 0.144603 0.036626 1.064545 0.188871 0.201198 0.05588 0.203795 0.201198 0.03536 0.089345 0.083778]before modify. columnLinesOfL:[29]iiii:[2]

后面那个after modify时L shape为[300 29]的原因是:执行

self.L=self.modify_one_column(self.L,new_column_tensor,J_minpos,self.numlinesOfL,columnLinesOfL)

时,columnLinesOfL是循环loop____vars中的变量,因此会随着每次循环发生变化,我写的modify_one_column见我的博文“修改tensor张量矩阵的某一列”。它决定了

修改后tensor的维度。

但是,无论如何,每一次循环,都是

before modify. L shape:[300 31]

说明self.L在循环体中虽然被修改了。但是下次循环又会被重置为初始值。

以上这篇基于tensorflow for循环 while循环案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持真格学网。

谷歌的科技产品都是很牛的,机器人学习框架也是,可能通过自学能力把要学的积累下去而且不会忘记,像小孩子一样,但比小孩子的记忆要强,谷歌的科技产品都是很牛的,机器人学习框架也是,可能通过自学能力把要学的积累下去而且不会忘记,像小孩子一样,但比小孩子的记忆要强内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • tensorflow高效读取数据的方法示例
  • 在tensorflow中实现leakyrelu操作详解(高效)
  • tensorflow保持每次训练结果一致的简单实现
  • python os模块中的isfile()和isdir()函数均返回false问题解决方法
  • 详解pytorch 0.4.0迁移指南
  • python 转义字符详细介绍
  • python爬取知乎图片代码实现解析
  • python3的print()函数的用法图文讲解
  • 简单的python调度器schedule详解
  • python中处理字符串之isalpha()方法的使用
  • 基于django orm、一对一、一对多、多对多的全面讲解
  • ipython和python区别详解
  • python实现的字典值比较功能示例
  • 如何学习 tensorflow
  • 关于tensorflow模块的安装
  • tensorflow环境各种属性错误怎么解决
  • tensorflow变量初始化问题? 如图,在代码中我已经初始化了变量...
  • 如何利用tensorflow写文章
  • tensorflow为什么写入不了全局变量
  • 为什么下载tensorflow会这样?
  • tensorflow能不能gpu cpu 一起训练
  • 如何安装Python3.7版的tensorflow+GPU
  • tensorflow报错 缺少占位符
  • 按照教程在WIN7上装完TensorFlow 但还是用不了
  • python3.5、tensorflow、Spyder软件人脸识别程序出现报错
  • 在tensorflow中使用placeholder函数报错
  • 我有一个npy文件,怎么用TensorFlow打开。。Linux
  • TensorFlow设置GPU运行显卡内存问题
  • 谷歌开源的TensorFlow可以如何应用,用什么语言可以修改
  • tensorflow和pycharm明明全都安装好了但是配置不上,是版本不...
  • 用tensorflow出现了bug”TypeError: Expected binary or unicod...
  • ttensorflow深度学习怎么基于训练好的模型继续训练
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页tensorflow高效读取数据的方法示例在tensorflow中实现leakyrelu操作详解(高效)tensorflow保持每次训练结果一致的简单实现python os模块中的isfile()和isdir()函数均返回false问题解决方法详解pytorch 0.4.0迁移指南python 转义字符详细介绍python爬取知乎图片代码实现解析python3的print()函数的用法图文讲解简单的python调度器schedule详解python中处理字符串之isalpha()方法的使用基于django orm、一对一、一对多、多对多的全面讲解ipython和python区别详解python实现的字典值比较功能示例python入门教程 超详细1小时学会python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍pycharm 2020最新永久激活码(附python 中文乱码问题深入分析python中使用xlrd、xlwt操作excepython科学计算环境推荐——anacpython实现的微信支付方式总结【三种方式教你用 python 实现微信跳一跳(mac+ios版如何利用python制作时间戳转换工具详解python集合用法实例分析pandas.dataframe选取/排除特定行的方法python利用operator模块实现对象的多级排python输出电脑上所有的串口名的方法解决python 执行sql语句时所传参数含有单python对于requests的封装方法详解python 保存矩阵为excel的实现方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved