Модуль: tf.experimental.numpy
tf.experimental.numpy: NumPy API на TensorFlow.
Этот модуль предоставляет подмножество API NumPy, построенного поверх операций TensorFlow. API основаны на и протестированы с версией NumPy 1.16.
Множество поддерживаемых API может расширяться со временем. Также будущие версии могут изменить базовый поддерживаемый API NumPy. Список некоторых систематических различий с NumPy приведен позже в разделе "Различия с NumPy".
Начало работы
Также см. Руководство по TensorFlow NumPy.
В примерах кода ниже мы будем предполагать, что tf.experimental.numpy импортирован как tnp и NumPy импортирован как np
print(tnp.ones([2,1]) + np.ones([1, 2]))
Типы
Модуль предоставляет класс ndarray, который оборачивает неизменяемый tf.Tensor. Предоставляются дополнительные функции, принимающие объекты типа массив. Здесь объекты типа массив включают ndarrays, как определено в этом модуле, а также tf.Tensor, в дополнение к типам, принятым NumPy.
Поддерживается подмножество типов NumPy. Продвижение типов соответствует семантике NumPy.
print(tnp.ones([1, 2], dtype=tnp.int16) + tnp.ones([2, 1], dtype=tnp.uint8))
Интерфейс массива
Класс ndarray реализует интерфейс __array__. Это должно позволить передавать эти объекты в контексты, которые ожидают объект NumPy или массив (например, matplotlib).
np.sum(tnp.ones([1, 2]) + np.ones([2, 1]))
Взаимодействие с TF
Вызовы API TF-NumPy могут быть вставлены в вызовы TensorFlow без копирования данных тензора. Это верно, даже если ndarray или tf.Tensor размещаются на устройстве, отличном от CPU.
В целом, ожидаемое поведение должно соответствовать поведению кода, связанного с tf.Tensor и запускающего бессостоятельные функции TensorFlow на них.
tnp.sum(tnp.ones([1, 2]) + tf.ones([2, 1]))
Обратите внимание, что __array_priority__ в настоящее время выбрано меньше, чем tf.Tensor. Поэтому оператор + выше возвращает tf.Tensor.
Дополнительные примеры взаимодействия включают:
- использование
with tf.GradientTape()области для вычисления градиентов через вызовы API TF-NumPy. - использование
tf.distribution.Strategyобласти для распределенного выполнения - использование
tf.vectorized_map()для ускорения кода с помощью автоматического векторизации
Поддержка устройств
Поскольку ndarray и функции оборачивают конструкции TensorFlow, код будет поддерживать GPU и TPU на уровне TensorFlow. Размещение устройств можно контролировать с помощью with tf.device областей. Обратите внимание, что эти устройства могут быть локальными или удаленными.
with tf.device("GPU:0"):
x = tnp.ones([1, 2])
print(tf.convert_to_tensor(x).device)
Граф и жадный режимы
Выполнение в жадном режиме обычно должно соответствовать семантике NumPy по выполнению операций поочередно. Однако тот же код может быть выполнен в режиме графа, поместив его внутрь tf.function. Тело функции может содержать код NumPy, а входные данные могут быть ndarray тоже.
@tf.function def f(x, y): return tnp.sum(x + y) f(tnp.ones([1, 2]), tf.ones([2, 1]))
Поток управления Python, основанный на ndarray значениях, будет переведён с помощью autograph в tf.cond и tf.while_loop конструкции. Код может быть скомпилирован XLA для дальнейшей оптимизации.
Однако обратите внимание, что выполнение в режиме графа может изменить поведение определенных операций, так как символическое выполнение может не иметь информации, вычисляемой во время выполнения. Некоторые различия:
- Формы могут быть неполными или неизвестными в режиме графа. Это означает, что
ndarray.shape,ndarray.sizeиndarray.ndimмогут вернутьndarrayобъекты вместо возвращения целых чисел (или кортежа целых чисел). -
__len__,__iter__и__index__свойстваndarrayаналогично могут не поддерживаться в режиме графа. Код, использующий эти свойства, может потребовать изменения на явные операции с формами или конструкции потока управления. - Также обратите внимание на ограничения autograph.
Изменение и переменные
ndarrays в настоящее время оборачивают неизменяемые tf.Tensor. Поэтому операции изменения, такие как присваивание срезов, не поддерживаются. Это может измениться в будущем. Однако вы можете напрямую создать tf.Variable и использовать его с API TF-NumPy.
tf_var = tf.Variable(2.0) tf_var.assign_add(tnp.square(tf_var))
Различия с NumPy
Вот неполный список различий:
- В настоящее время не все типы данных поддерживаются. Например,
np.float96,np.float128. Типыnp.object_,np.str_,np.recarrayне поддерживаются. -
Хранение
ndarrayтолько в порядке C. Порядок Fortran, представления,stride_tricksне поддерживаются. - Поддерживается только подмножество функций и модулей. Этот набор будет расширяться со временем. Для поддерживаемых функций некоторые аргументы или значения аргументов могут не поддерживаться. Эти различия обычно указаны в комментариях к функциям. Полная
ufuncподдержка также не предоставляется. - Изменение буфера в настоящее время не поддерживается.
ndarraysоборачивают неизменяемые тензоры. Это означает, что аргументы выходных буферов (например,outв ufuncs) не поддерживаются. - NumPy API на C не поддерживается. Интеграция NumPy на Cython и Swig не поддерживаются.
Модули
random модуль: Общедоступный API для пространства имен tf.experimental.numpy.random.
Классы
class bool_: Логический тип (True или False), хранится как байт.
class complex128: Тип комплексного числа, составленный из двух чисел с двойной точностью с плавающей запятой
class complex64: Тип комплексного числа, составленный из двух чисел одинарной точностью с плавающей запятой
class complex_: Тип комплексного числа, составленный из двух чисел с двойной точностью с плавающей запятой
class float16: Число с плавающей запятой полуточной точности.
class float32: Число с плавающей запятой одинарной точности, совместимое с C float.
class float64: Число с плавающей запятой двойной точности, совместимое с Python float
class float_: Число с плавающей запятой двойной точности, совместимое с Python float
class iinfo: iinfo(тип)
class inexact: Абстрактный базовый класс всех числовых скалярных типов с (потенциально)
class int16: Тип целого числа со знаком, совместимый с C short.
class int32: Тип целого числа со знаком, совместимый с C int.
class int64: Тип целого числа со знаком, совместимый с Python int и C long.
class int8: Тип целого числа со знаком, совместимый с C char.
class int_: Тип целого числа со знаком, совместимый с Python int и C long.
class ndarray: tf.Tensor представляет собой многомерный массив элементов.
class object_: Любой объект Python.
class string_: Строка байтов.
class uint16: Тип целого без знака, совместимый с C unsigned short.
class uint32: Тип целого без знака, совместимый с C unsigned int.
class uint64: Тип целого без знака, совместимый с C unsigned long.
class uint8: Тип целого без знака, совместимый с C unsigned char.
class unicode_: Строка Юникода.
Функции
abs(...): Вариант TensorFlow функции NumPy abs.
absolute(...): Вариант TensorFlow функции NumPy absolute.
add(...): Вариант TensorFlow функции NumPy add.
all(...): Вариант TensorFlow функции NumPy all.
allclose(...): Вариант TensorFlow функции NumPy allclose.
amax(...): Вариант TensorFlow функции NumPy amax.
amin(...): Вариант TensorFlow функции NumPy amin.
angle(...): Вариант TensorFlow функции NumPy angle.
any(...): Вариант TensorFlow функции NumPy any.
append(...): Вариант TensorFlow функции NumPy append.
arange(...): Вариант TensorFlow функции NumPy arange.
arccos(...): Вариант TensorFlow функции NumPy arccos.
arccosh(...): Вариант TensorFlow функции NumPy arccosh.
arcsin(...): Вариант TensorFlow функции NumPy arcsin.
arcsinh(...): Вариант TensorFlow функции NumPy arcsinh.
arctan(...): Вариант TensorFlow функции NumPy arctan.
arctan2(...): Вариант TensorFlow функции NumPy arctan2.
arctanh(...): Вариант TensorFlow функции NumPy arctanh.
argmax(...): TensorFlow версия NumPy's argmax.
argmin(...): TensorFlow версия NumPy's argmin.
argsort(...): TensorFlow версия NumPy's argsort.
around(...): TensorFlow версия NumPy's around.
array(...): TensorFlow версия NumPy's array.
array_equal(...): TensorFlow версия NumPy's array_equal.
asanyarray(...): TensorFlow версия NumPy's asanyarray.
asarray(...): TensorFlow версия NumPy's asarray.
ascontiguousarray(...): TensorFlow версия NumPy's ascontiguousarray.
atleast_1d(...): TensorFlow версия NumPy's atleast_1d.
atleast_2d(...): TensorFlow версия NumPy's atleast_2d.
atleast_3d(...): TensorFlow версия NumPy's atleast_3d.
average(...): TensorFlow версия NumPy's average.
bitwise_and(...): TensorFlow версия NumPy's bitwise_and.
bitwise_not(...): TensorFlow версия NumPy's bitwise_not.
bitwise_or(...): TensorFlow версия NumPy's bitwise_or.
bitwise_xor(...): TensorFlow версия NumPy's bitwise_xor.
broadcast_arrays(...): TensorFlow версия NumPy's broadcast_arrays.
broadcast_to(...): TensorFlow версия NumPy's broadcast_to.
cbrt(...): TensorFlow версия NumPy's cbrt.
ceil(...): TensorFlow версия NumPy's ceil.
clip(...): TensorFlow версия NumPy's clip.
compress(...): TensorFlow версия NumPy's compress.
concatenate(...): TensorFlow версия NumPy's concatenate.
conj(...): TensorFlow версия NumPy's conj.
conjugate(...): TensorFlow версия NumPy's conjugate.
copy(...): TensorFlow версия NumPy's copy.
cos(...): TensorFlow версия NumPy's cos.
cosh(...): TensorFlow версия NumPy's cosh.
count_nonzero(...): TensorFlow версия NumPy's count_nonzero.
cross(...): TensorFlow версия NumPy's cross.
cumprod(...): TensorFlow версия NumPy's cumprod.
cumsum(...): TensorFlow версия NumPy's cumsum.
deg2rad(...): TensorFlow версия NumPy's deg2rad.
diag(...): TensorFlow версия NumPy's diag.
diag_indices(...): TensorFlow версия NumPy's diag_indices.
diagflat(...): TensorFlow версия NumPy's diagflat.
diagonal(...): TensorFlow версия NumPy's diagonal.
diff(...): TensorFlow версия NumPy's diff.
divide(...): TensorFlow версия NumPy's divide.
divmod(...): TensorFlow версия NumPy's divmod.
dot(...): TensorFlow версия NumPy's dot.
dsplit(...): TensorFlow версия NumPy's dsplit.
dstack(...): TensorFlow версия NumPy's dstack.
einsum(...): TensorFlow версия NumPy's einsum.
empty(...): TensorFlow версия NumPy's empty.
empty_like(...): TensorFlow версия NumPy's empty_like.
equal(...): TensorFlow версия NumPy's equal.
exp(...): TensorFlow версия NumPy's exp.
exp2(...): TensorFlow версия NumPy's exp2.
expand_dims(...): TensorFlow версия NumPy's expand_dims.
experimental_enable_numpy_behavior(...): Включить поведение NumPy на тензорах.
expm1(...): TensorFlow версия NumPy's expm1.
eye(...): TensorFlow версия NumPy's eye.
fabs(...): TensorFlow версия NumPy's fabs.
finfo(...): TensorFlow версия NumPy's finfo.
fix(...): TensorFlow версия NumPy's fix.
flip(...): TensorFlow версия NumPy's flip.
fliplr(...): TensorFlow версия NumPy's fliplr.
flipud(...): TensorFlow версия NumPy's flipud.
float_power(...): TensorFlow версия NumPy's float_power.
floor(...): TensorFlow версия NumPy's floor.
floor_divide(...): TensorFlow версия NumPy's floor_divide.
full(...): TensorFlow версия NumPy's full.
full_like(...): TensorFlow версия NumPy's full_like.
gcd(...): TensorFlow версия NumPy's gcd.
geomspace(...): TensorFlow версия NumPy's geomspace.
greater(...): TensorFlow версия NumPy's greater.
greater_equal(...): TensorFlow версия NumPy's greater_equal.
heaviside(...): TensorFlow версия NumPy's heaviside.
hsplit(...): TensorFlow версия NumPy's hsplit.
hstack(...): TensorFlow версия NumPy's hstack.
hypot(...): TensorFlow версия NumPy's hypot.
identity(...): TensorFlow версия NumPy's identity.
imag(...): TensorFlow версия NumPy's imag.
inner(...): TensorFlow версия NumPy's inner.
isclose(...): TensorFlow версия NumPy's isclose.
iscomplex(...): TensorFlow версия NumPy's iscomplex.
iscomplexobj(...): TensorFlow версия NumPy's iscomplexobj.
isfinite(...): TensorFlow версия NumPy's isfinite.
isinf(...): TensorFlow версия NumPy's isinf.
isnan(...): TensorFlow версия NumPy's isnan.
isneginf(...): TensorFlow версия NumPy's isneginf.
isposinf(...): TensorFlow версия NumPy's isposinf.
isreal(...): TensorFlow версия NumPy's isreal.
isrealobj(...): TensorFlow версия NumPy's isrealobj.
isscalar(...): TensorFlow версия NumPy's isscalar.
issubdtype(...): Возвращает True, если первый аргумент является типом кода, меньшим или равным в иерархии типов.
ix_(...): TensorFlow версия NumPy's ix_.
kron(...): TensorFlow версия NumPy's kron.
lcm(...): TensorFlow версия NumPy's lcm.
less(...): TensorFlow версия NumPy's less.
less_equal(...): TensorFlow версия NumPy's less_equal.
linspace(...): TensorFlow версия NumPy's linspace.
log(...): TensorFlow версия NumPy's log.
log10(...): TensorFlow версия NumPy's log10.
log1p(...): TensorFlow версия NumPy's log1p.
log2(...): TensorFlow версия NumPy's log2.
logaddexp(...): TensorFlow версия NumPy's logaddexp.
logaddexp2(...): Вариант TensorFlow для NumPy's logaddexp2.
logical_and(...): Вариант TensorFlow для NumPy's logical_and.
logical_not(...): Вариант TensorFlow для NumPy's logical_not.
logical_or(...): Вариант TensorFlow для NumPy's logical_or.
logical_xor(...): Вариант TensorFlow для NumPy's logical_xor.
logspace(...): Вариант TensorFlow для NumPy's logspace.
matmul(...): Вариант TensorFlow для NumPy's matmul.
max(...): Вариант TensorFlow для NumPy's max.
maximum(...): Вариант TensorFlow для NumPy's maximum.
mean(...): Вариант TensorFlow для NumPy's mean.
meshgrid(...): Вариант TensorFlow для NumPy's meshgrid.
min(...): Вариант TensorFlow для NumPy's min.
minimum(...): Вариант TensorFlow для NumPy's minimum.
mod(...): Вариант TensorFlow для NumPy's mod.
moveaxis(...): Вариант TensorFlow для NumPy's moveaxis.
multiply(...): Вариант TensorFlow для NumPy's multiply.
nanmean(...): Вариант TensorFlow для NumPy's nanmean.
nanprod(...): Вариант TensorFlow для NumPy's nanprod.
nansum(...): Вариант TensorFlow для NumPy's nansum.
ndim(...): Вариант TensorFlow для NumPy's ndim.
negative(...): Вариант TensorFlow для NumPy's negative.
nextafter(...): Вариант TensorFlow для NumPy's nextafter.
nonzero(...): Вариант TensorFlow для NumPy's nonzero.
not_equal(...): Вариант TensorFlow для NumPy's not_equal.
ones(...): Вариант TensorFlow для NumPy's ones.
ones_like(...): Вариант TensorFlow для NumPy's ones_like.
outer(...): Вариант TensorFlow для NumPy's outer.
pad(...): Вариант TensorFlow для NumPy's pad.
polyval(...): Вариант TensorFlow для NumPy's polyval.
positive(...): Вариант TensorFlow для NumPy's positive.
power(...): Вариант TensorFlow для NumPy's power.
prod(...): Вариант TensorFlow для NumPy's prod.
promote_types(...): Вариант TensorFlow для NumPy's promote_types.
ptp(...): Вариант TensorFlow для NumPy's ptp.
rad2deg(...): Вариант TensorFlow для NumPy's rad2deg.
ravel(...): Вариант TensorFlow для NumPy's ravel.
real(...): Вариант TensorFlow для NumPy's real.
reciprocal(...): Вариант TensorFlow для NumPy's reciprocal.
remainder(...): Вариант TensorFlow для NumPy's remainder.
repeat(...): Вариант TensorFlow для NumPy's repeat.
reshape(...): Вариант TensorFlow для NumPy's reshape.
result_type(...): Вариант TensorFlow для NumPy's result_type.
roll(...): Вариант TensorFlow для NumPy's roll.
rot90(...): Вариант TensorFlow для NumPy's rot90.
round(...): Вариант TensorFlow для NumPy's round.
select(...): Вариант TensorFlow для NumPy's select.
shape(...): Вариант TensorFlow для NumPy's shape.
sign(...): Вариант TensorFlow для NumPy's sign.
signbit(...): Вариант TensorFlow для NumPy's signbit.
sin(...): Вариант TensorFlow для NumPy's sin.
sinc(...): Вариант TensorFlow для NumPy's sinc.
sinh(...): Вариант TensorFlow для NumPy's sinh.
size(...): Вариант TensorFlow для NumPy's size.
sort(...): Вариант TensorFlow для NumPy's sort.
split(...): Вариант TensorFlow для NumPy's split.
sqrt(...): Вариант TensorFlow для NumPy's sqrt.
square(...): Вариант TensorFlow для NumPy's square.
squeeze(...): Вариант TensorFlow для NumPy's squeeze.
stack(...): Вариант TensorFlow для NumPy's stack.
std(...): Вариант TensorFlow для NumPy's std.
subtract(...): Вариант TensorFlow для NumPy's subtract.
sum(...): Вариант TensorFlow для NumPy's sum.
swapaxes(...): Вариант TensorFlow для NumPy's swapaxes.
take(...): Вариант TensorFlow для NumPy's take.
take_along_axis(...): Вариант TensorFlow для NumPy's take_along_axis.
tan(...): Вариант TensorFlow для NumPy's tan.
tanh(...): Вариант TensorFlow для NumPy's tanh.
tensordot(...): Вариант TensorFlow для NumPy's tensordot.
tile(...): Вариант TensorFlow для NumPy's tile.
trace(...): Вариант TensorFlow для NumPy's trace.
transpose(...): Вариант TensorFlow для NumPy's transpose.
tri(...): Вариант TensorFlow для NumPy's tri.
tril(...): Вариант TensorFlow для NumPy's tril.
triu(...): Вариант TensorFlow для NumPy's triu.
true_divide(...): Вариант TensorFlow для NumPy's true_divide.
vander(...): Вариант TensorFlow для NumPy's vander.
var(...): Вариант TensorFlow для NumPy's var.
vdot(...): Вариант TensorFlow для NumPy's vdot.
vsplit(...): Вариант TensorFlow для NumPy's vsplit.
vstack(...): Вариант TensorFlow для NumPy's vstack.
where(...): Вариант TensorFlow для NumPy's where.
zeros(...): Вариант TensorFlow для NumPy's zeros.
zeros_like(...): Вариант TensorFlow для NumPy's zeros_like.
| Другие члены | |
|---|---|
| e | 2.718281828459045 |
| inf | inf |
| newaxis | None |
| pi | 3.141592653589793 |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/experimental/numpy