gpt4 book ai didi

python - tensorflow 中图像的有效加权和

转载 作者:太空宇宙 更新时间:2023-11-03 20:58:53 24 4
gpt4 key购买 nike

我有一堆图像,它们被分组为以下形状的张量:

> images.shape

产生(2000, 1440, 1, 16),其含义如下(rows, cols,channels, images_count)

现在,为了解释简单起见,我需要对这些图像进行加权求和,从而生成一张图像,即 (2000, 1440, 1)

实际上有多组权重(超过 128 个),这意味着在 16 个输入图像中我得到了 128 个合并图像,而不是仅一个,从图像大小来看这是相当繁重的操作。

因此,我正在寻找方法/想法,使我能够快速有效地执行操作,同时消耗最少的临时数据和内存大小。

TF 中是否有任何机制可以允许高效、快速地执行此操作?

提前谢谢您!

最佳答案

为简单起见,假设您有 8 个不同的权重组,并且数据采用您指定的格式。

首先,我们将图像转换为传统的 batch_size 第一种形式。当我们在图像和权重之间进行元素乘法时,我们通过添加第二个图像来支持广播来扩展图像的维度。最后,我们通过计算每个权重组的(已加权的)图像总和来减少第一个维度。

import tensorflow as tf
import numpy as np

x = tf.placeholder(tf.float32, shape=(2000, 1440, 1, None))
w = tf.placeholder(tf.float32, shape=(None, 2000, 1440, 1))

xtransposed = tf.transpose(x, perm=[3, 0, 1, 2]) # n_samples first
xexpanded = tf.expand_dims(xtransposed, 1) # expand for broadcasting

multiplied = xexpanded * w

reduced = tf.reduce_sum(multiplied, axis=0) # weighted sum over all images

images = np.random.normal(size=(2000, 1440, 1, 16))
weights = np.random.normal(size=(8, 2000, 1440, 1))

with tf.Session() as sess:
res = sess.run(reduced, feed_dict={x:images, w:weights})
print(res.shape) # (8, 2000, 1440, 1)

res 现在以 numpy 格式存储 8 个不同权重组的加权和。

关于python - tensorflow 中图像的有效加权和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55830107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com