154 µs ± 2.61 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
用@tf.function装饰它要快2倍多:
import tensorflow as tf
tensor = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8]], dtype=tf.float32)
columns = [1, 3] # < columns you want to extract
@tf.function
def extract_columns(tensor=tensor, columns=columns):
transposed = tf.transpose(tensor)
sliced = [transposed[c] for c in columns]
stacked = tf.transpose(tf.stack(sliced, axis=0))
return stacked
%timeit -n 10000 extract_columns()
66.8 µs ± 2.03 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
3.一行代码用于急切执行(TF2,TF1.x-eager):
import tensorflow as tf
tensor = tf.constant([[1, 2, 3, 4], [5, 6, 7, 8]], dtype=tf.float32)
columns = [1, 3] # < columns you want to extract
res = tf.transpose(tf.stack([t for i, t in enumerate(tf.transpose(tensor))
if i in columns], 0))
print(res.numpy())
# [[2. 4.]
# [6. 8.]]
%timeit在tf.__version__=='2.0.0-alpha0'中:
242 µs ± 2.97 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
1.使用
tf.gather(tensor, columns, axis=1)
(TF1.x
,TF2
):2.带索引(
TF1.x
,TF2
):将其包装到函数并在
tf.__version__=='2.0.0-alpha0'
中运行%timeit
:用
@tf.function
装饰它要快2倍多:3.一行代码用于急切执行(
TF2
,TF1.x-eager
):%timeit
在tf.__version__=='2.0.0-alpha0'
中:4.使用
tf.one_hot()
指定行/列,然后tf.boolean_mask()
提取这些行/列(TF1.x
,TF2
):%timeit
在tf.__version__=='2.0.0-alpha0'
中:您可以使用整形和切片的组合获得所有奇数列:
相关问题 更多 >
编程相关推荐