#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()
вместо этого. В tensorflowtensor
является результатом некоторой операции и не поддается обучению, в то время как в pytorch это может также относиться к обучаемому тензору.3. Просто чтобы уточнить, в tensorflow, если вы выполняете какую-либо операцию над тензором (например, умножаете), вы получаете другой новый тензор, вы не можете обновить существующий. Переменные, с другой стороны, могут быть обновлены.
4. извините, я просто хочу быть уверенным. основываясь на вашем предыдущем коде, я могу использовать K.cast или K.variable вместо from_numpy, верно?
5. Да, но какую из них использовать, зависит от того, собираетесь ли вы обновлять этот тензор (в данном случае использовать
K.variable
) или нет (K.cast
).