gpt4 book ai didi

python - 如何在 tensorflow 中正确地将一个数组附加到另​​一个数组?

转载 作者:太空宇宙 更新时间:2023-11-03 13:56:19 25 4
gpt4 key购买 nike

我目前在 python 中有 2 个 ndarray,我使用 zip 来获取索引并迭代这两个数组,并将每个单元格从一个单元格附加到另一个单元格,类似于下面所示。我现在想将其转换为 tensorflow ,并基本上完全删除 for 循环。我认为这很容易,但我似乎正在处理很多形状问题,并认为是时候在 SO 上发帖来找出正确的方法来做到这一点。

arr1的形状为(24,),arr2的形状为(24,5)

这就是我试图引入 TF 的逻辑。

for id1, id2 in zip(arr1, arr2):
row = id2.tolist()
row.append(id1)
finarr.append(row)

我已经尝试了很多方法,但我当前的实现(低于显示的错误)仍然无法正常工作。

错误是:

: ('all the input array dimensions except for the concatenation axis must match exactly',)

当前代码:

val = tf.transpose(tf.reshape(arr1, (-1, arr1.size)))
finarr= tf.concatenate([arr2, val], 0)

我的想法是错的吗?有没有更好的办法?

--------编辑--------

下面的代码似乎是通过 numpy 执行连接的更优雅的方式,但我仍然没有找到等效的 tensorflow 。

finarr= np.column_stack((arr2, arr1))

最佳答案

您需要扩展arr1的维度,并沿最后一个轴连接。这是一种方法:

import numpy as np
import tensorflow as tf

arr1 = np.arange(24)
arr2 = np.arange(24 * 5).reshape(24, 5)
finarr_np = np.column_stack((arr2, arr1))

p1 = tf.placeholder(arr1.dtype, shape=arr1.shape)
p2 = tf.placeholder(arr2.dtype, shape=arr2.shape)
f = tf.concat([p2, p1[:, None]], -1)

with tf.Session() as sess:
finarr_tf = sess.run(f, feed_dict={p1: arr1, p2: arr2})

assert (finarr_tf == finarr_np).all()

关于python - 如何在 tensorflow 中正确地将一个数组附加到另​​一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49575741/

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