For loop 张量流中张量中的For循环
我是tensorflow的新手,我想用一些if-else条件来做一个张量。我只是不知道怎么做 在python中,如果张量类似于[3,3,3],我可以使用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
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可以做的一切也可以应用于它们。