Как ввести массив numpy в нейронную сеть в pytorch?

#python #numpy #pytorch #numpy-ndarray

#python #numpy #pytorch #numpy-ndarray

Вопрос:

Это нейронная сеть, которую я определил

 class generator(nn.Module):
def __init__(self, n_dim, io_dim):
    super().__init__()
    self.gen = nn.Sequential(
        nn.Linear(n_dim,64),
        nn.LeakyReLU(.01),
        nn.Linear(64, io_dim),
    )

def forward(self, x):
    return self.gen(x)
#The input x is:
x = numpy.random.dirichlet([10,6,3],3)
 

Теперь я хочу, чтобы нейронная сеть принимала распределенные выборки Дирихле (выборка с использованием numpy.random.dirichlet([10,6,3],10) ) в качестве входных данных. Как это сделать?

Комментарии:

1. torch.tensor(your_np_array)

Ответ №1:

Вам нужно преобразовать numpy.array в torch.Tensor :

input_tensor = torch.from_numpy(x)

Комментарии:

1. Это преобразует тип данных в float64, что вызывает проблемы при инициализации сети.

2. Вы можете преобразовать тензор в любой нужный вам тип, input_tensor = input_tensor.type(torch.LongTensor) .

Ответ №2:

Чтобы ввести массив NumPy в нейронную сеть в PyTorch, вам необходимо преобразовать numpy.array в torch.Tensor . Для этого вам нужно ввести следующий код.

 input_tensor = torch.from_numpy(x)
 

После этого ваш numpy.array файл преобразуется в torch.Tensor .

Ответ №3:

Вместо того, чтобы использовать numpy для выборки из распределения Дирихле, используйте pytorch. Вот код:

 y = torch.Tensor([[10,6,3]])
m = torch.distributions.dirichlet.Dirichlet(y)
z=m.sample()

gen = generator(3,3)
gen(z)