Как я могу эффективно выполнить эту операцию без каких-либо операций на месте?
n_id = np.random.choice(np.arange(2708), size=100)
z = np.random.rand(100, 64)
z_sparse = np.zeros((2708,64))
z_sparse[n_id[:100]] = z
По сути, я хочу, чтобы строки n_id z_sparse содержали строки z, но я не могу выполнять какие-либо операции на месте, потому что моя конечная цель состоит в том, чтобы использовать это в задаче pytorch.
Один из них - создать нулевые строки внутри z точно так, чтобы строки z попали в позиции n_id, но не уверен, как это будет работать эффективно.
По сути, строка 1 из z
должна быть размещена в строке n_id[0]
из z_sparse
, затем строка 2 из z
должна быть в строке n_id[1]
из z_sparse
, и так далее ...
Вот ошибка PyTorch ji c вам интересно: RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation