Модуль: 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]) + tnp.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 размещены на устройстве, отличном от процессора.
В общем, ожидаемое поведение должно соответствовать поведению кода, включающего 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) не поддерживаются - API NumPy 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: Эквивалент numpy.ndarray, поддерживаемый тензорами TensorFlow.
class object_: Любой объект Python.
class string_: bytes(итерируемый_из_целых_чисел) -> bytes
class uint16: Тип целого числа без знака, совместимый с C unsigned short.
class uint32: Тип целого числа без знака, совместимый с C unsigned int.
class uint64: Тип целого числа без знака, совместимый с C unsigned long.
class uint8: Тип целого числа без знака, совместимый с C unsigned char.
class unicode_: str(объект='') -> str
Функции
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.
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 |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/experimental/numpy