какова эквивалентная функция keras для from_numpy в torch?

#python #tensorflow #keras

#python #тензорный поток #keras

Вопрос:

Я нашел код в torch, и мне нужно изменить его на keras, но я не смог найти какой-либо эквивалент для некоторых из них. например, я изменил некоторые из них следующим образом, но я не уверен, верны они или нет:

  `torch.tensor` to `K.variable` ( `K` is `from keras import backend as K`)
  unsqueez_(1) to K.expand_dims
  torch.empty((3,)   requested_shape) to K.zeros((3,)   requested_shape)
  

но я ничего не смог найти для torch.from_numpy . теперь мой вопрос о вышеуказанных изменениях, которые я сделал, верны ли они? и что-то похожее на torch.from_numpy ? Я ценю вашу помощь.

Ответ №1:

Вы можете просто инициализировать переменную с помощью массива numpy следующим образом:

 ary = np.random.normal(size=(2, 2))
v = K.variable(ary)
  

или используйте cast() для преобразования массива numpy в тензор:

 ary = np.random.normal(size=(2, 2))
tensor = K.cast(ary, dtype='float32')
  

Помимо этого, код, который вы использовали, правильный.

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

1. Спасибо, но я немного смущен. теперь, что я должен использовать вместо torch.from_numpy? Я могу использовать приведение вместо этого? потому что я думаю, что from_numpy применил изменения к тензору, а также к массиву numpy.

2. Это зависит от того, что вы хотите сделать с этим тензором. Если вы хотите, чтобы этот тензор обновлялся во время обучения, вам нужно использовать K.variable . Если это просто некоторый тензор, который не обновляется во время обучения, но хранит некоторое постоянное значение (или используется для умножения некоторой переменной / тензора), вы можете использовать K.cast() вместо этого. В tensorflow tensor является результатом некоторой операции и не поддается обучению, в то время как в pytorch это может также относиться к обучаемому тензору.

3. Просто чтобы уточнить, в tensorflow, если вы выполняете какую-либо операцию над тензором (например, умножаете), вы получаете другой новый тензор, вы не можете обновить существующий. Переменные, с другой стороны, могут быть обновлены.

4. извините, я просто хочу быть уверенным. основываясь на вашем предыдущем коде, я могу использовать K.cast или K.variable вместо from_numpy, верно?

5. Да, но какую из них использовать, зависит от того, собираетесь ли вы обновлять этот тензор (в данном случае использовать K.variable ) или нет ( K.cast ).