Эта статья взята изПрограмма перевода самородковОрганизуется переводОфициальная документация TensorFlow. Если вам интересно, добро пожаловатьПодать заявку на переводчика, изучив учебник переводчика, участвуйте в переводе и сопоставлении статей и документов. Мы также набираем переводчиков TensorFlow, поэтому, пожалуйста, примите активное участие.
Изменения API в TensorFlow 1.0 больше не являются полностью обратно совместимыми. Поэтому приложения TensorFlow, работающие на TensorFlow 0.n, могут некорректно работать с TensorFlow 1.0. В этом выпуске мы внесли некоторые изменения в API, чтобы обеспечить его внутреннюю согласованность; в течение следующего цикла выпуска 1.N изменений поколений не будет.
Это руководство расскажет вам об основных изменениях в новом API и о том, как автоматически обновить ваши программы до TensorFlow 1.0. Это руководство не только поможет вам внести изменения в программу, но и объяснит, почему мы вносим эти изменения.
Как обновить
Если вы хотите автоматически перенести свой код на версию 1.0, вы можете попробовать нашtf_upgrade.py
сценарий. Этот сценарий будет работать в большинстве случаев, но иногда вам потребуется изменить его вручную.
Вы можете найти в нашемGitHubПолучите этот скрипт в формате .
Чтобы преобразовать один исходный файл TensorFlow версии 0.n в версию 1.0, введите команду в следующем формате:
$ python tf_upgrade.py --infile InputFile --outfile OutputFile
Например, следующая команда поместит файл с именемtest.py
Программа TensorFlow версии 0.n преобразуется в программу с именемtest_1.0.py
Программа TensorFlow версии 1.0:
$ python tf_upgrade.py --infile test.py --outfile test_1.0.py
tf_upgrade.py
Скрипт также создает файл с именемreport.txt
, в котором задокументированы все изменения, внесенные в процессе обновления, и предлагаются некоторые изменения вручную, которые вам, возможно, придется внести.
Чтобы обновить весь каталог программ TensorFlow версии 0.n до версии 1.0, введите команду в следующем формате:
$ python tf_upgrade.py --intree InputDir --outtree OutputDir
Например, следующая команда/home/user/cool
Все программы TensorFlow версии 0.n в версии 1.0 преобразуются во вновь созданный/home/user/cool_1.0
В каталоге:
$ python tf_upgrade.py --intree /home/user/cool --outtree /home/user/cool_1.0
ограничение
Есть несколько моментов, о которых следует помнить при использовании сценариев для обновления. особенно:
-
вам нужно исправить все вручную
tf.reverse()
пример.tf_upgrade.py
Скрипт также будет выводиться на экранreport.txt
Файл предупреждает вас оtf.reverse()
Информация. -
Если вы столкнулись с некоторыми параметрами, которые необходимо изменить,
tf_upgrade.py
Постарается отформатировать ваш код минимально, но не изменит автоматически фактический порядок параметров. следовательноtf_upgrade.py
Аргументы ключевого слова будут использоваться, чтобы сделать аргументы функции независимыми от порядка. -
tf.get_variable_scope().reuse_variables()
Такие конструкторы потерпят неудачу. Мы рекомендуем удалить их и заменить на:with tf.variable_scope(tf.get_variable_scope(), reuse=True): ...
-
и
tf.pack
иtf.unpack
Точно так же мы будемTensorArray.pack
а такжеTensorArray.unpack
переименован вTensorArray.stack
иTensorArray.unstack
. но,TensorArray.pack
иTensorArray.unpack
не связанные напрямуюtf
пространство имен и, следовательно, не могут быть обнаружены лексически напрямую, например.foo = tf.TensorArray(); foo.unpack()
. Поэтому их нужно модифицировать вручную.
Вручную обновите свой код
Вы также можете не использоватьtf_upgrade.py
, обновите код вручную. Остальная часть этого документа содержит полный список изменений TensorFlow 1.0, не совместимых с предыдущими версиями.
Переменные
Функции переменных теперь более последовательны и менее понятны.
-
tf.VARIABLES
- нужно переименовать в
tf.GLOBAL_VARIABLES
- нужно переименовать в
-
tf.all_variables
- нужно переименовать в
tf.global_variables
- нужно переименовать в
-
tf.initialize_all_variables
- нужно переименовать в
tf.global_variables_initializer
- нужно переименовать в
-
tf.initialize_local_variables
- нужно переименовать в
tf.local_variables_initializer
- нужно переименовать в
-
tf.initialize_variables
- нужно переименовать в
tf.variables_initializer
- нужно переименовать в
Агрегатная функция
Все агрегатные функции (Summary functions) теперь унифицированы вtf.summary
в пространстве имен.
-
tf.audio_summary
- нужно переименовать в
tf.summary.audio
- нужно переименовать в
-
tf.contrib.deprecated.histogram_summary
- нужно переименовать в
tf.summary.histogram
- нужно переименовать в
-
tf.contrib.deprecated.scalar_summary
- нужно переименовать в
tf.summary.scalar
- нужно переименовать в
-
tf.histogram_summary
- нужно переименовать в
tf.summary.histogram
- нужно переименовать в
-
tf.image_summary
- нужно переименовать в
tf.summary.image
- нужно переименовать в
-
tf.merge_all_summaries
- нужно переименовать в
tf.summary.merge_all
- нужно переименовать в
-
tf.merge_summary
- нужно переименовать в
tf.summary.merge
- нужно переименовать в
-
tf.scalar_summary
- нужно переименовать в
tf.summary.scalar
- нужно переименовать в
-
tf.train.SummaryWriter
- нужно переименовать в
tf.summary.FileWriter
- нужно переименовать в
Численная разница
Целочисленное подразделение иtf.floordiv
Будет использоваться семантика этажа. Это позволяетnp.divide
иnp.mod
результат сtf.divide
иtf.mod
результаты остаются стабильными. Кроме того, мы модифицировалиtf.round
Алгоритм округления, используемый для согласования с NumPy.
-
tf.div
-
разделение
tf.divide
Семантика теперь изменена, чтобы соответствовать семантике Python, то есть в Python 3./
нотация и деление будущего модуля Python 2 всегда будут приводить к числам с плавающей запятой,//
Будет выполнено целочисленное деление. также,tf.div
Будет выполнено только целочисленное деление. Чтобы принудительно разделить в стиле усечения в C, используйтеtf.truncatediv
. -
Пожалуйста, попробуйте ввести свой код
tf.div
изменить наtf.divide
, который последует за семантику Python.
-
-
tf.mod
- Излишек
tf.mod
Теперь семантика изменена, чтобы соответствовать семантике Python. Кроме того, операции над целыми числами будут использовать семантику пола. Чтобы принудительно выполнить операцию остатка в стиле усечения в C, используйтеtf.truncatemod
.
- Излишек
Сравнение операций деления между новой и старой версиями представлено в следующей таблице:
выражение | TF 0.11 (py2) | TF 0.11 (py3) | TF 1.0 (py2) | TF 1.0 (py3) |
---|---|---|---|---|
tf.div(3,4) | 0 | 0 | 0 | 0 |
tf.div(-3,4) | 0 | 0 | -1 | -1 |
tf.mod(-3,4) | -3 | -3 | 1 | 1 |
-3/4 | 0 | -0.75 | -1 | -0.75 |
-3/4tf.divide(-3,4) | N/A | N/A | -0.75 | -1 |
Сравнение операций округления между новой и старой версиями представлено в следующей таблице:
входить | Python | NumPy | C++ round() | TensorFlow 0.11(floor(x+.5)) | TensorFlow 1.0 |
---|---|---|---|---|---|
-3.5 | -4 | -4 | -4 | -3 | -4 |
-2.5 | -2 | -2 | -3 | -2 | -2 |
-1.5 | -2 | -2 | -2 | -1 | -2 |
-0.5 | 0 | 0 | -1 | 0 | 0 |
0.5 | 0 | 0 | 1 | 1 | 0 |
1.5 | 2 | 2 | 2 | 2 | 2 |
2.5 | 2 | 2 | 3 | 3 | 2 |
3.5 | 4 | 4 | 4 | 4 | 4 |
Соответствие именованию NumPy
В новой версии многие функции переименовываются в соответствии с NumPy. Это сделано для того, чтобы максимально упростить переход между NumPy и TensorFlow. Хотя мы исключили некоторые распространенные несоответствия, теперь есть некоторые функции, которые не совсем совпадают.
-
tf.inv
- нужно переименовать в
tf.reciprocal
- Это сделано, чтобы предотвратить его использование с функцией инверсии матрицы NumPy.
np.inv
затемнять
- нужно переименовать в
-
tf.list_diff
- нужно переименовать в
tf.setdiff1d
- нужно переименовать в
-
tf.listdiff
- нужно переименовать в
tf.setdiff1d
- нужно переименовать в
-
tf.mul
- нужно переименовать в
tf.multiply
- нужно переименовать в
-
tf.neg
- нужно переименовать в
tf.negative
- нужно переименовать в
-
tf.select
- нужно переименовать в
tf.where
-
tf.where
теперь сnp.where
то же самое, нужно передать 3 или 1 параметр
- нужно переименовать в
-
tf.sub
- нужно переименовать в
tf.subtract
- нужно переименовать в
Соответствие аргументам NumPy
Параметры некоторых методов TensorFlow 1.0 теперь совпадают с параметрами NumPy. Для этого TensorFlow 1.0 изменил некоторые аргументы ключевых слов и переупорядочил некоторые аргументы. Обратите внимание, что TensorFlow 1.0 больше не используется.dimension
Вместо того, чтобы использоватьaxis
. TensorFlow 1.0 всегда будет сохранять аргументы тензора первыми в операциях, изменяющих тензоры. (видетьtf.concat
изменения).
-
tf.argmax
- аргументы ключевого слова
dimension
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.argmin
- аргументы ключевого слова
dimension
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.concat
- аргументы ключевого слова
concat_dim
нужно переименовать вaxis
- Входные параметры переупорядочены как
tf.concat(values, axis, name='concat')
.
- аргументы ключевого слова
-
tf.count_nonzero
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.expand_dims
- аргументы ключевого слова
dim
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reduce_all
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reduce_any
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reduce_join
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reduce_logsumexp
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reduce_max
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reduce_mean
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reduce_min
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reduce_prod
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reduce_sum
- аргументы ключевого слова
reduction_indices
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.reverse
-
tf.reverse
Требуется передать 1 измерение передbool
Тензоры типов, используемые для управления порядком измерений, теперь управляются с помощью набора индексов осей. - Например
tf.reverse(a, [True, False, True])
теперь нужно изменить наtf.reverse(a, [0, 2])
-
-
tf.reverse_sequence
- аргументы ключевого слова
batch_dim
нужно переименовать вbatch_axis
- аргументы ключевого слова
seq_dim
нужно переименовать вseq_axis
- аргументы ключевого слова
-
tf.sparse_concat
- аргументы ключевого слова
concat_dim
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.sparse_reduce_sum
- аргументы ключевого слова
reduction_axes
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.sparse_reduce_sum_sparse
- аргументы ключевого слова
reduction_axes
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.sparse_split
- аргументы ключевого слова
split_dim
нужно переименовать вaxis
- Входные параметры переупорядочены как
tf.sparse_split(keyword_required=KeywordRequired(), sp_input=None, num_split=None, axis=None, name=None, split_dim=None)
.
- аргументы ключевого слова
-
tf.split
- аргументы ключевого слова
split_dim
нужно переименовать вaxis
- аргументы ключевого слова
num_split
нужно переименовать вnum_or_size_splits
- Входные параметры переупорядочены как
tf.split(value, num_or_size_splits, axis=0, num=None, name='split')
.
- аргументы ключевого слова
-
tf.squeeze
- аргументы ключевого слова
squeeze_dims
нужно переименовать вaxis
- аргументы ключевого слова
-
tf.svd
- Входные параметры переупорядочены как
tf.svd(tensor, full_matrices=False, compute_uv=True, name=None)
.
- Входные параметры переупорядочены как
Упрощенное математическое преобразование
Математические операции пакетной версии были удалены. Теперь не пакетная версия функции уже включает в себя функцию пакетной обработки. Например,tf.complex_abs
функционал перенесен наtf.abs
-
tf.batch_band_part
- нужно переименовать в
tf.band_part
- нужно переименовать в
-
tf.batch_cholesky
- нужно переименовать в
tf.cholesky
- нужно переименовать в
-
tf.batch_cholesky_solve
- нужно переименовать в
tf.cholesky_solve
- нужно переименовать в
-
tf.batch_fft
- нужно переименовать в
tf.fft
- нужно переименовать в
-
tf.batch_fft3d
- нужно переименовать в
tf.fft3d
- нужно переименовать в
-
tf.batch_ifft
- нужно переименовать в
tf.ifft
- нужно переименовать в
-
tf.batch_ifft2d
- нужно переименовать в
tf.ifft2d
- нужно переименовать в
-
tf.batch_ifft3d
- нужно переименовать в
tf.ifft3d
- нужно переименовать в
-
tf.batch_matmul
- нужно переименовать в
tf.matmul
- нужно переименовать в
-
tf.batch_matrix_determinant
- нужно переименовать в
tf.matrix_determinant
- нужно переименовать в
-
tf.batch_matrix_diag
- нужно переименовать в
tf.matrix_diag
- нужно переименовать в
-
tf.batch_matrix_inverse
- нужно переименовать в
tf.matrix_inverse
- нужно переименовать в
-
tf.batch_matrix_solve
- нужно переименовать в
tf.matrix_solve
- нужно переименовать в
-
tf.batch_matrix_solve_ls
- нужно переименовать в
tf.matrix_solve_ls
- нужно переименовать в
-
tf.batch_matrix_transpose
- нужно переименовать в
tf.matrix_transpose
- нужно переименовать в
-
tf.batch_matrix_triangular_solve
- нужно переименовать в
tf.matrix_triangular_solve
- нужно переименовать в
-
tf.batch_self_adjoint_eig
- нужно переименовать в
tf.self_adjoint_eig
- нужно переименовать в
-
tf.batch_self_adjoint_eigvals
- нужно переименовать в
tf.self_adjoint_eigvals
- нужно переименовать в
-
tf.batch_set_diag
- нужно переименовать в
tf.set_diag
- нужно переименовать в
-
tf.batch_svd
- нужно переименовать в
tf.svd
- нужно переименовать в
-
tf.complex_abs
- нужно переименовать в
tf.abs
- нужно переименовать в
Другие изменения
В дополнение к изменениям, описанным выше, вот некоторые изменения:
-
tf.image.per_image_whitening
- нужно переименовать в
tf.image.per_image_standardization
- нужно переименовать в
-
tf.nn.sigmoid_cross_entropy_with_logits
- Входные параметры переупорядочены как
tf.nn.sigmoid_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, name=None)
.
- Входные параметры переупорядочены как
-
tf.nn.softmax_cross_entropy_with_logits
- Входные параметры переупорядочены как
tf.nn.softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, dim=-1, name=None)
.
- Входные параметры переупорядочены как
-
tf.nn.sparse_softmax_cross_entropy_with_logits
- Входные параметры переупорядочены как
tf.nn.sparse_softmax_cross_entropy_with_logits(_sentinel=None, labels=None, logits=None, name=None)
.
- Входные параметры переупорядочены как
-
tf.ones_initializer
- Его нужно преобразовать в вызов функции, например
tf.ones_initializer()
- Его нужно преобразовать в вызов функции, например
-
tf.pack
- нужно переименовать в
tf.stack
- нужно переименовать в
-
tf.round
-
tf.round
Семантика теперь такая же, как округление Банкера.
-
-
tf.unpack
- нужно переименовать в
tf.unstack
- нужно переименовать в
-
tf.zeros_initializer
- Его нужно преобразовать в вызов функции, например
tf.zeros_initializer()
- Его нужно преобразовать в вызов функции, например
Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,продукт,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.