почему "NumPy операции конвертируют Tensors в numpy массивы автоматически"? как эта функция была реализована? - PullRequest
1 голос
/ 04 апреля 2020

Чтение документов TensorFlow: https://www.tensorflow.org/tutorials/customization/basics#numpy_compatibility

import numpy as np

ndarray = np.ones([3, 3])

print("TensorFlow operations convert numpy arrays to Tensors automatically")
tensor = tf.multiply(ndarray, 42)
print(tensor)


print("And NumPy operations convert Tensors to numpy arrays automatically")
print(np.add(tensor, 1))

print("The .numpy() method explicitly converts a Tensor to a numpy array")
print(tensor.numpy())

тензор = tf.multiply (ndarray, 42)

Поддержка API TF NumPy объекты в качестве входных данных, и это легко понять, потому что API TF просто реализованы для обработки NumPy объектов командой TensorFlow.

Но

print (np.add ( тензор, 1))

Напротив, почему NumPy API могут обрабатывать tf. Тензор для меня довольно удивителен. Это механизм, который NumPy предоставлен для обработки объектов любого типа? Или просто поддерживается Python на уровне языка? (Я новичок в Python)

1 Ответ

0 голосов
/ 09 мая 2020

API TensorFlow вращается вокруг тензоров, которые переходят от операции к операции - отсюда и название TensorFlow. Тензор обычно представляет собой многомерный массив (в точности как NumPy ndarray), но он также может содержать скаляр (простое значение, такое как 42). Эти тензоры будут важны при создании пользовательских функций затрат, пользовательских метрик, пользовательских слоев и многого другого, поэтому давайте посмотрим, как их создавать и манипулировать ими.

И Numpy, и TensorFlow являются библиотеками Nd Array. Тензоры - это полилинейные карты от векторных пространств к действительным числам. Скаляр, Вектор и Матрица являются тензорами. Таким образом, тензор может быть представлен в виде многомерного массива.

Numpy имеет поддержку массива Nd, но не имеет методов для создания тензорных функций, не может автоматически вычислять производные и не может использовать преимущества GPU.

TensorFlow предоставляет примитивы для определения функций на тензорах и автоматического вычисления их производных. Вычисления TensorFlow определяют график, который не имеет числового значения до оценки. На этом графике можно видеть, что каждая операция преобразовывается как узел, а тензоры преобразуются на каждом узле и распространяются на следующую операцию на графике.

Тензор хорошо работает с NumPy: вы можете создать тензор из * Массив 1015 * и наоборот. Вы даже можете применять операции TensorFlow к NumPy массивам и NumPy к тензорным операциям:

>>> a = np.array([2., 4., 5.])
>>> tf.constant(a)
<tf.Tensor: id=111, shape=(3,), dtype=float64, numpy=array([2., 4., 5.])>>>> t.numpy() # or np.array(t)
array([[1., 2., 3.],
[4., 5., 6.]], dtype=float32)
>>> tf.square(a)
<tf.Tensor: id=116, shape=(3,), dtype=float64, numpy=array([4., 16.,
25.])>
>>> np.square(t)
array([[ 1., 4., 9.],
[16., 25., 36.]], dtype=float32)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...