reticuate::py_require(). New function
py_require_tensorflow() which can be called at the start of
an R session to enable reticulate to resolve tensorflow. Calling
install_tensorflow() in most circumstances is no longer
necessary.install_tensorflow() installs TensorFlow v2.20 by
default.install_tensorflow() installs TensorFlow v2.16 by
default.install_tensorflow() detects a GPU on Linux, it will
automatically install the cuda package and configure required symlinks
for cudnn and ptxax.install_tensorflow() installs TensorFlow v2.15 by
defaultinstall_tensorflow() changes:
install_tensorflow(cuda = FALSE). Aside from the
Nvidia driver, no other pre-existing Nvidia CUDA packages are now
necessary.configure_cudnn argument is now superseded by the
new argument cuda.metal, for specifying if the
tensorflow-metal pip package should be installed on Arm
Macs. Defaults to TRUE on Arm Macs.as.array() and other methods might
fail if the tensor had conversion disabled via r_to_py() or
convert = FALSE.install_tensorflow_extras(),
tfe_enable_eager_execution()train() and
train_and_evaluate() now warn about their deprecation
status when called. The will be removed in a future release.install_tensorflow() changes:
envname argument new default is
"r-tensorflow". This means that unless the
envname argument supplied,
install_tensorflow() will now install into the
"r-tensorflow" environment, bootstrapping a venv of that
name if necessary.new_env argument. If TRUE, any
existing environment specified by envname is deleted and
created anew. Defaults to TRUE if envname is
"r-tensorflow", FALSE otherwise.configure_cudnn = FALSE to disable.pip_ignore_installed default is now FALSE
again.tensorflow-macos and
tensorflow-metal.pillar:type_sum() method for Tensors, giving a more
informative printout of Tensors in R tracebacks and tibbles.install_tensorflow() now installs TF v2.11 by
default.
as_tensor() now coerces bare R atomic vectors to R
arrays before conversion. As a consequence, by default, R atomic double
vectors now coerce to ‘float64’ dtype tensors instead of
‘float32’.
shape() gains the ability to accept vectors of
length > 1 in ..., including other
tf.TensorShapes. Shapes are automatically
flattened.
Fixed an issue where a ListWrapper object of
trackable keras layers (e.g., as part of a keras model) would not
convert to an R list.
Generic method updates:
^ will now invoke tf.square() or
tf.sqrt() directly when appropriate|, &, and ! now cast
arguments to ‘bool’ dtype.print() now shows 1d shapes without a trailing
commas.str() method for tensors now returns only a single
compact line; str() on a list of tensors now does something
sensible.install_tensorflow() now install TensorFlow 2.9 by
default.
install_tensorflow() no longer requires conda on
Windows, now works in a regular venv.
Comparing two partially-defined TensorShape now
returns TRUE if each dimension matches. e.g.:
shape(NA, 4) == shape(NA, 4) now returns TRUE, previously
FALSE.
Tensors with dtype ‘string’ now convert to R character vectors by
methods as.array() and as.matrix().
(previously they converted to python.builtin.bytes, or an R list of
python.builtin.bytes objects)
as_tensor():
tf$dtypes$saturate_cast() instead of
tf$cast().shape argument now accepts a tensor.shape provided as a tensor would raise an error.tf.SparseTensor objects now inherit from
"tensorflow.tensor".
Updated default Tensorflow version installed by
install_tensorflow() to 2.8.
as_tensor() gains a shape argument, can
be used to fill or reshape tensors. Scalars can be recycled to a tensor
of arbitrary shape, otherwise supplied objects are reshaped
using row-major (C-style) semantics.
install_tensorflow() now provides experimental
support for Arm Macs, with the following restrictions:
install_tensorflow() default conda_python_version
changes from 3.7 to NULL.
tf.TensorShape()’s gain format() and
print() S3 methods.
[ method for slicing tensors now accepts
NA as a synonym for a missing or NULL spec.
For example x[NA:3] is now valid, equivalent to
x[:3] in Python.
Default Tensorflow version installed by
install_tensorflow() updated to 2.7
Breaking changes:
shape() now returns a tf.TensorShape()
object (Previously an R-list of NULLs or integers).[ method for tf.TensorShape() objects also
now returns a tf.TensorShape(). Use [[,
as.numeric, as.integer, and/or
as.list to convert to R objects.length() method for tensorflow.tensor now
returns NA_integer_ for tensors with not fully defined
shapes. (previously a zero length integer vector).dim() method for tensorflow.tensor now
returns an R integer vector with NA for dimensions that are
undefined. (previously an R list with NULL for undefined
dimension)New S3 generics for tf.TensorShape()’s:
c, length, [<-,
[[<-, merge, ==,
!=, as_tensor(), as.list,
as.integer, as.numeric,
as.double, py_str (joining previous generics
[ and [[). See ?shape for
extended examples.
Ops S3 generics for tensorflow.tensors that take two
arguments now automatically cast a supplied non-tensor to the dtype of
the supplied tensor that triggered the S3 dispatch. Casting is done via
as_tensor(). e.g., this now works:
as_tensor(5L) - 2 # now returns tf.Tensor(3, shape=(), dtype=int32)
previously it would raise an error:
TypeError: `x` and `y` must have the same dtype, got tf.int32 != tf.float32
Generics that now do autocasting: +, -, *, /, %/%, %%, ^, &, |, ==,
!=, <, <=, >, >=
install_tensorflow(): new argument with default
pip_ignore_installed = TRUE. This ensures that all
Tensorflow dependencies like Numpy are installed by pip rather than
conda.
A message with the Tensorflow version is now shown when the python module is loaded, e.g: “Loaded Tensorflow version 2.6.0”
Updated default Tensorflow version to 2.6.
Changed default in tf_function() to
autograph=TRUE.
Added S3 generic as_tensor().
tfautograph added to Imports
jsonlite removed from Imports, tfestimators removed from Suggests
Refactored install_tensorflow().
install_tensorflow(version="2.4") will install
"2.4.2". Previously it would install “2.4.0”)Removed “Config/reticulate” declaration from DESCRIPTION.
RETICULATE_AUTOCONFIGURE=FALSE environment
variable when using non-default tensorflow installations (e.g.,
‘tensorflow-cpu’) no longer required.install_tensorflow() for
automatic installation.Refactored automated tests to closer match the default installation procedure and compute environment of most user.
Expanded CI test coverage to include R devel, oldrel and 3.6.
Fixed an issue where extra packages with version constraints like
install_tensorflow(extra_packages = "Pillow<8.3") were
not quoted properly.
Fixed an issue where valid tensor-like objects supplied to
log(x, base), cospi(), tanpi(),
and sinpi() would raise an error.
tf_function()
(e.g., jit_compile)expm1 S3 generic.tfe_enable_eager_execution is deprecated. Eager mode
has been the default since TF version 2.0.tf_config() on unsuccessful
installation.use_session_with_seed (#428)set_random_seed function that makes more
sense for TensorFlow >= 2.0 (#442)Bugfix with all_dims (#398)
Indexing for TensorShape & py_to_r conversion
(#379, #388)
Upgraded default installed version to 2.0.0.
Tensorboard log directory path fixes (#360).
Allow for v1 and v2 compat
(#358).
install_tensorflow now does not installs
tfprobability, tfhub and other related
packages.
Upgraded default installed version to 1.14.0
Refactored the install_tensorflow code delegating to
reticulate (#333, #341): We completely delegate to
installation to reticulate::py_install, the main difference
is that now the default environment name to install is
r-reticulate and not r-tensorflow.
added option to silence TF CPP info output
tf_gpu_configured function to check if GPU was
correctly