python - 在 Tensorflow 中将 1D 数组作为 3D 数组的元素传递
问题描述
在 Tensorflow 中:我的程序中生成了一组数组 x0、x1、x2 和 x3,每个数组都有 N 个元素。我还有一个零初始化的 3D 张量,尺寸为 (N,2,2)。
我想将每个数组作为我的 3D 张量的元素(在第三方方向有 N 个元素), M[:,0,0] =x0, M[:,0,1] =x1, M[ :,1,0] =x2 和 M[:,1,1] =x3,我想用 for 循环来做到这一点。
在我更熟悉的 Matlab 中,可以简单地做到这一点:
M(1,1,:)=x0
M(2,2,:)=x3
M(1,2,:)=x1
M(2,1,:)=x2
有没有一种方法可以在 for 循环中传递数组作为张量流中张量的第三维,例如:
for i in range(2):
M[:,i,i]=x
其中 x 是一个数组?
解决方案
我不认为它会那样工作。你可以这样做:
import tensorflow as tf
import numpy as np
x0,x1,x2,x3 = [ np.random.randint(0,10,3) for _ in range(4)]
tf_X = tf.stack( [ tf.stack([x0,x1]),
tf.stack([x2,x3]) ])
编辑:它可能会改变Tensorflow2
。否则,您可以使用pytorch
:
import torch
import numpy as np
X = torch.ones([3,4])
v = np.arange(4)
X[0,:] = torch.from_numpy(v)
结果:
In [20]: X
Out[20]:
tensor([[0., 1., 2., 3.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
推荐阅读
- java - Spring Boot 结构:验证控制器或服务层中的图像大小?
- c# - 在自定义列表上实现 INotifyCollectionChanged
- angular - 合并多个 observables 并返回一个
- angular - Angular HTTP POST 请求被调用 4 次
- .net - 带有 Xamarin 的可移植库 - .NET Standard 与 UWP
- spring - Spring Boot 2 休眠搜索
- android - 使 AppBarLayout 下面的 tablayout 透明
- java - 静态变量默认初始化 vs 在代码中初始化
- azure - ARM 模板:有条件地添加到数组
- python - 当所有值为正时,面积图的绘制比例