Я занимаюсь этим уже два часа, и это такая простая проблема. Я строю оптимизатор для весов, используя GA, и для выполнения мутации мне нужно иметь возможность поменять ряд весов в одном NN на другой NN
У меня есть 3D-тензор для каждого слоя фигуры [население, тотал_интумент, total_output]. Я выбираю строку в 3d-тензоре, а затем два человека должны поменять местами значения одной и той же строки. Например, строка [nn1, row_to_swap] должна поменяться местами со строкой [nn2, row_to_swap].
Пример с тензором совокупности 3, входными узлами 3 и выходными узлами 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]]
Конечно, TensorFlow немного сложнее.