python – 在一个张量上循环

python – 在一个张量上循环,第1张

概述我试图以 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 npimport tensorflow as tfbatch_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 + 1def 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)
总结

以上是内存溢出为你收集整理的python – 在一个张量上循环全部内容,希望文章能够帮你解决python – 在一个张量上循环所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1207600.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存