我已经做了两个小时了,这是一个很简单的问题。我正在建立一个优化权重使用遗传算法和执行变异,我需要能够交换一个与另一个神经网络的权重行
我有一个三维张量为每一层的形状[人口,总输入,总输出]。我在三维张量中选取一行,然后两个人交换同一行的值。例如,行[nn1,行\u到\u交换]需要与行[nn2,行\u到\u交换]交换。你知道吗
一个张量为population 3、input nodes 3和output nodes 2的例子有这样一个形状[3,3,2],其中我想交换[0,0]和[1,0]:
[[[ -0.08140966 -0.04416275 ],
[ 0.08669635, -0.1681123 ],
[ 0.06804892, 0.05393898]],
[[ 0.11369397, -0.0822193 ],
[-0.08230941, 0.16685687],
[-0.08133464, -0.02710806]],
[[ 0.08381592, -0.07583494],
[-0.08355351, 0.07891247],
[ 0.0392112 , -0.07686558]]]
应该是这样的。你知道吗
[[[ -0.08140966 -0.04416275 ],
[ 0.08669635, -0.1681123 ],
[ 0.06804892, 0.05393898]],
[[ 0.11369397, -0.0822193 ],
[-0.08230941, 0.16685687],
[-0.08133464, -0.02710806]],
[[ 0.08381592, -0.07583494],
[-0.08355351, 0.07891247],
[ 0.0392112 , -0.07686558]]]
只是提醒一下,我不知道张量的确切形状是什么,因为它们是用形状变量创建的。有时这些方法可能需要进行多次交换。假设[1,0]和[1,2]必须与[0,0]和[0,2]交换,因此如果有一种方法可以一次性进行多个交换而不创建循环,那就太好了。你知道吗
例如:
[[[ -0.08140966 -0.04416275 ],
[ 0.08669635, -0.1681123 ],
[ 0.06804892, 0.05393898]],
[[ 0.11369397, -0.0822193 ],
[-0.08230941, 0.16685687],
[-0.08133464, -0.02710806]],
[[ 0.08381592, -0.07583494],
[-0.08355351, 0.07891247],
[ 0.0392112 , -0.07686558]]]
应该是这样的。你知道吗
[[[ 0.11369397, -0.0822193 ],
[-0.08230941, 0.16685687]
[-0.08133464, -0.02710806]],
[[ -0.08140966 -0.04416275 ],
[-0.08230941, 0.16685687],
[ 0.06804892, 0.05393898]],
[[ 0.08381592, -0.07583494],
[-0.08355351, 0.07891247],
[ 0.0392112 , -0.07686558]]]
Numpy似乎有一个简单的解决方案,他们使用
npArray[[0,0]] = npArray[[1,0]]
当然,张量流有点复杂。你知道吗
这可以通过使用tf.scatter\u nd\u更新. 请查找示例代码段:
相关问题 更多 >
编程相关推荐