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)