For loop 张量流中张量中的For循环

For loop 张量流中张量中的For循环,for-loop,multidimensional-array,tensorflow,vectorization,tensor,For Loop,Multidimensional Array,Tensorflow,Vectorization,Tensor,我是tensorflow的新手,我想用一些if-else条件来做一个张量。我只是不知道怎么做 在python中,如果张量类似于[3,3,3],我可以使用for循环,如下所示: for i in range(3): for j in range(3): for k in range(3): if tensor[i,j,k]>10: tensor[i,j,k]=tensor[i,j,k]-10 elif tensor

我是tensorflow的新手,我想用一些if-else条件来做一个张量。我只是不知道怎么做

在python中,如果张量类似于[3,3,3],我可以使用for循环,如下所示:

for i in range(3):
   for j in range(3):
      for k in range(3):
         if tensor[i,j,k]>10:
            tensor[i,j,k]=tensor[i,j,k]-10
         elif tensor[i,j,k]<4:
            tensor[i,j,k]=tensor[i,j,k]+60
在这之后,我仍然想用张量计算loos函数,然后进行下一个循环的训练。 有人知道怎么做吗? 我知道如何在一个会话中以单一方式完成此操作。但我不知道如何在训练循环中做到这一点。

Tensorflow方法 您可以很容易地对特定的示例进行矢量化,所以不需要通过for循环来实现。以下是纯tensorflow解决方案:

x=tf.placeholdershape=[3,3],dtype=tf.float32 cond1=tf.x>10,x-10,tf.zeros_likex cond2=tf.x<4,x+60,tf.zeros_likex cond3=tf.wheretf.logical_和x>=4,x 10 mask2=张量<4 张量[mask1]=10 张量[mask2]+=60 返回张量 z=tf.py_funcprocess[x],tf.float32 把它们结合在一起 一个完整的可运行示例:

导入tensorflow作为tf x=tf.placeholdershape=[3,3],dtype=tf.float32 cond1=tf.x>10,x-10,tf.zeros_likex cond2=tf.x<4,x+60,tf.zeros_likex cond3=tf.wheretf.logical_和x>=4,x 10 mask2=张量<4 张量[mask1]=10 张量[mask2]+=60 返回张量 z=tf.py_funcprocess[x],tf.float32 样本=[[10,15,25],[1,2,3],[4,4,10]] 将tf.Session作为SES: sess.runtf.global\u variables\u初始值设定项 printses.runy,feed_dict={x:sample} printses.runz,feed_dict={x:sample} 输出:

[[10. 5. 15.] [61. 62. 63.] [ 4. 4. 10.]] [[10. 5. 15.] [61. 62. 63.] [ 4. 4. 10.]]
谢谢,这很有帮助,但我仍然得到一个问题,在执行y或z函数后,我仍然需要对张量X进行大量计算。那么,在sess.runy之前,有没有办法使用张量X?我不明白这个问题,因为它现在听起来太宽泛了:你可以做很多不同的事情。这个图可以是任意大的,x可以有任意多个变换。等等,我的问题是这样的:首先我得到一个图像并将它应用到一个网络中,然后我得到一个张量x,然后,我应该像上面一样在x上做一些阈值,我得到另一个张量x1和x2,然后用x1 x2,我将做另一个计算以得到丢失数据,所以在我自己的代码中,x1x2应该在损失函数计算中获得,而不是孤立函数。你说的孤立函数是什么意思?y和z是张量,是计算图的一部分,就像x一样:用x可以做的一切也可以应用于它们。