TensorFlow, Julia - Тензоры и поплавки

Julien спросил: 28 апреля 2018 в 08:36 в: tensorflow

Почему я могу преобразовать Float в тензор, например:

tensor = convert(TensorFlow.Tensor{Float32}, 0.05)
<Tensor Cast_8:1 shape=() dtype=Float32>

Но не Тензор для Float. Следующая команда:

convert(Float32, tensor)

возвращает следующую ошибку:

ERROR: MethodError: Cannot `convert` an object of type TensorFlow.Tensor{Float32} to an object of type Float32
This may have arisen from a call to the constructor Float32(...),
since type constructors fall back to convert methods.

Как использовать значение тензора в переменной или массив?

Спасибо

1 ответ

Lyndon White phg ответил: 29 апреля 2018 в 09:03

В TensorFlow (в отличие от фактической математики) Tensor на самом деле не является (только) вещью, которая обертывает некоторые числа. В графике вычислений это символическое значение , которое может случиться, что они содержат константы, как в вашем случае, но также переменные и заполнители. Таким образом, в общем случае convert возврат к номеру не имеет смысла - переменные и заполнители не имеют конкретных значений в то время, когда вы только что определили их.

Вместо этого нужно сделать run тензор в Session:

sess = Session(Graph())
run(sess, tensor)    # plus necessary initializers and placeholders

. Это вычислит граф вычислений до где значение tensor может быть определено. Просто взгляните на основные примеры; весь код TensorFlow является повторением этой схемы: определите график, а затем запустите его в сеансе с фактическими данными, предоставленными для заполнителей и начальными значениями.

Julien ответил: 29 апреля 2018 в 09:09
Спасибо за этот ответ. После этого существует ли решение использовать поплавки в тензоре без преобразования его в float?
phg ответил: 29 апреля 2018 в 06:52
Что именно вы подразумеваете под этим? Вам всегда нужно run a Tensor "выходить" из поплавка. Это не конверсия, а оценка.
Julien ответил: 29 апреля 2018 в 07:01
В приведенном выше примере я хотел бы использовать "0,05" в массиве, например. Если значений больше, скопируйте их в массив.