python – 在一个张量上循环
发布时间:2020-12-16 23:44:22  所属栏目:Python  来源:网络整理 
            导读:我试图以 python的方式处理一个可变大小的张量,如下所示: # X is of shape [m,n]for x in X: process(x) 我试图使用tf.scan,问题是我想处理每个子张量,所以我试图使用嵌套扫描,但是我启用了它,因为tf.scan可以使用累加器,如果没有发现它将把elems的第一个条
                
                
                
            | 
                         我试图以 
 python的方式处理一个可变大小的张量,如下所示: 
  
  
  
# X is of shape [m,n]
for x in X:
    process(x) 
 我试图使用tf.scan,问题是我想处理每个子张量,所以我试图使用嵌套扫描,但是我启用了它,因为tf.scan可以使用累加器,如果没有发现它将把elems的第一个条目作为初始化器,我不想这样做. import numpy as np
import tensorflow as tf
batch_x = np.random.randint(0,10,size=(5,10))
x = tf.placeholder(tf.float32,shape=[None,10])
def inner_loop(x_in):
    return tf.scan(lambda _,x_: x_ + 1,x_in)
outer_loop = tf.scan(lambda _,input_: inner_loop(input_),x,back_prop=True)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    rs = sess.run(outer_loop,feed_dict={x: batch_x}) 
 有什么建议 ? 解决方法
 tensorflow内置函数的大多数可以元素应用.所以你可以将张量传递给函数.喜欢: 
  
  
  
        outer_loop = inner_loop(x) 但是,如果你有一些无法以这种方式应用的函数(它真的很容易看到这个函数),你可以使用map_fn. 比如说,你的函数只是为张量(或其他)的每个元素添加1: inputs = tf.placeholder...
def my_elementwise_func(x):
    return x + 1
def recursive_map(inputs):
   if tf.shape(inputs).ndims > 0:
       return tf.map_fn(recursive_map,inputs)
   else:
       return my_elementwise_func(inputs)
result = recursive_map(inputs)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
