1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/microsoft-TensorFlow-DirectML

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
RELEASE.md 170 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 07:35 98f4e47

CVE-2020-13435, CVE-2020-13630, CVE-2020-13631, CVE-2020-13871 и CVE-2020-15358.

  • Исправление #41630 путём включения max_seq_length в ключ кэша дескриптора CuDNN.
  • Привязка numpy к версии 1.18.5 для предотвращения нарушения ABI при компиляции кода, использующего заголовки NumPy и TensorFlow.

Версия 1.15.3

Исправления ошибок и другие изменения

  • Обновление sqlite3 до версии 3.31.01 для обработки CVE-2019-19880, CVE-2019-19244 и CVE-2019-19645.
  • Обновление curl до версии 7.69.1 для обработки CVE-2019-15601.
  • Обновление libjpeg-turbo до версии 2.0.4 для обработки CVE-2018-19664, CVE-2018-20330 и CVE-2019-13960.
  • Обновление Apache Spark до версии 2.4.5 для обработки CVE-2019-10099, CVE-2018-17190 и CVE-2018-11770.

Версия 1.15.2

Исправления ошибок и другие изменения

  • Устранение уязвимости в системе безопасности, когда преобразование строки Python в значение tf.float16 приводит к сбою сегментации (CVE-2020-5215).
  • Обновление curl до версии 7.66.0 для обработки CVE-2019-5482 и CVE-2019-5481.
  • Обновление sqlite3 до версии 3.30.01 для обработки CVE-2019-19646, CVE-2019-19645 и CVE-2019-16168.

Версия 1.15.0

Это последний выпуск TensorFlow с версией 1.x. Мы не планируем обновлять ветку 1.x новыми функциями, хотя будем выпускать исправления уязвимостей в течение как минимум одного года.

Основные функции и улучшения

  • Как было объявлено, pip-пакет tensorflow по умолчанию будет включать поддержку GPU (как и tensorflow-gpu) для платформ, на которых у нас сейчас есть поддержка GPU (Linux и Windows). Он будет работать на машинах с графическими процессорами Nvidia и без них. Пакет tensorflow-gpu всё ещё будет доступен, а пользователи, которые обеспокоены размером пакета, могут загрузить пакеты только для ЦП по адресу tensorflow-cpu.
  • TensorFlow 1.15 содержит полную реализацию API версии 2.0 в своём модуле compat.v2. Он содержит копию основного модуля версии 1.15 (без contrib) в модуле compat.v1. TensorFlow 1.15 может эмулировать поведение версии 2.0 с помощью функции enable_v2_behavior(). Это позволяет писать код, совместимый с будущими версиями: явно импортируя либо tensorflow.compat.v1, либо tensorflow.compat.v2, вы можете гарантировать, что ваш код будет работать без изменений с установкой версий 1.15 или 2.0.
  • EagerTensor теперь поддерживает интерфейс буфера numpy для тензоров.
  • Добавьте переключатели tf.enable_control_flow_v2() и tf.disable_control_flow_v2() для включения/отключения потока управления v2.
  • Включите поток управления v2 как часть tf.enable_v2_behavior() и TF2_BEHAVIOR=1.
  • AutoGraph переводит поток управления Python в выражения TensorFlow, позволяя пользователям писать обычный Python внутри функций, украшенных tf.function. AutoGraph также применяется в функциях, используемых с tf.data, tf.distribute и... * через путь стратегии распространения no-op.
  1. Выполнение заключено в tf.function, если в compile не установлено run_eagerly=True.
  • Выдавать ошибку, если аргумент batch_size используется при вводе данных dataset/generator/keras sequence.
  • tf.lite:
    • Добавить поддержку GATHER в NN API delegate.
    • скрипт обнаружения объектов tflite имеет режим отладки.
    • добавить поддержку делегата для QUANTIZE.
    • добавлен скрипт оценки для COCO minival.
    • добавлена поддержка делегата для QUANTIZED_16BIT_LSTM.
    • преобразует подграфы hardswish в атомарные операции.
  • добавить поддержку значения аргумента cycle_length по умолчанию для tf.data.Dataset.interleave, равное количеству планируемых ядер ЦП.
  • parallel_for: добавить конвертер для MatrixDiag.
  • добавить атрибут narrow_range к QuantizeAndDequantizeV2 и V3.
  • добавлена новая операция: tf.strings.unsorted_segment_join.
  • добавить поддержку аппаратного ускорения для topK_v2.
  • добавлены новые классы TypeSpec.
  • версия CloudBigtable обновлена до v0.10.0.
  • выставить Head как публичный API.
  • обновить строку документации для gather, чтобы правильно описать случай с непустым batch_dims.
  • добавлена функция полезности tf.sparse.from_dense.
  • улучшена поддержка рваных тензоров в TensorFlowTestCase.
  • делает преобразование a-нормальной формы в Pyct настраиваемым относительно того, какие узлы преобразуются в переменные, а какие нет.
  • теперь ResizeInputTensor работает для всех делегатов.
  • добавить поддержку EXPAND_DIMS в делегат NN API TEST: expand_dims_test.
  • если ветви функции tf.cond являются без состояния и не касаются каких-либо ресурсов, то она выдаёт StatelessIf op.
  • tf.cond, tf.while и if и while в AutoGraph теперь принимают одноэлементный предикат, если он есть. Это не влияет на управление потоком не-V2.
  • если функции cond и body в tf.while_loop являются без состояния и не касаются каких-либо ресурсов, то он выдаёт StatelessWhile op.
  • рефакторинг кода поддержки Quant8 LSTM для уменьшения размера двоичного файла TFLite.
  • добавить поддержку локального мягкого размещения устройства для нетерпеливого op.
  • добавить поддержку аппаратного ускорения для LogSoftMax.
  • добавлена функция nested_value_rowids для рваных тензоров.
  • добавить защиту, чтобы избежать ускорения нормализации L2 при входном ранге != 4.
  • добавить операцию tf.math.cumulative_logsumexp.
  • добавить tf.ragged.stack.
  • исправить проблему выделения памяти при вызове AddNewInputConstantTensor.
  • сбой приложения делегата оставляет интерпретатор в допустимом состоянии.
  • добавить проверку правильного выравнивания памяти в MemoryAllocation::MemoryAllocation().
  • извлечь NNAPIDelegateKernel из nnapi_delegate.cc.
  • добавлена поддержка FusedBatchNormV3 в конвертере.
  • рваный в плотный op для прямого вычисления тензоров.
  • исправить случайную квадратичную стоимость построения графа в графическом режиме tf.gradients().

Спасибо нашим участникам

Этот выпуск содержит вклад многих людей из Google, а также:

a6802739, Aaron Ma, Abdullah Selek, Abolfazl Shahbazi, Ag Ramesh, Albert Z. Guo, Albin Joy, Alex Itkes, Alex Sergeev, Alexander Pivovarov, Alexey Romanov, alhkad, Amit Srivastava, amoitra, Andrew Lihonosov, Andrii Prymostka, Anuj Rawat, Astropeak, Ayush Agrawal, Bairen Yi, Bas Aarts, Bastian Eichenberger, Ben Barsdell, Benjamin Peterson, bhack, Bharat Raghunathan, Bhavani Subramanian, Bryan Cutler, candy.dc, Cao Zongyan, Captain-Pool, Casper Da Costa-Luis, Chen Guoyin, Cheng Chang, chengchingwen, Chong Yan, Choong Yin Thong, Christopher Yeh, Clayne Robison, Coady, Patrick, Dan Ganea, David Norman, Denis Khalikov, Deven Desai, Diego Caballero, Duncan Dean, Duncan Riach, Dwight J Lyle, Eamon Ito-Fisher, eashtian3, EFanZh, ejot, Elroy Ashtian Jr, Eric Schweitz, Fangjun Kuang, Fei Hu, fo40225, formath, Fred Reiss, Frederic Bastien, Fredrik Knutsson, G. Hussain Chinoy, Gabriel, gehring, George Grzegorz Pawelczak, Gianluca Varisco, Gleb Popov, Greg Peatfield, Guillaume Klein, Gurpreet Singh, Gustavo Lima Chaves, haison, Haraldur TóMas HallgríMsson, HarikrishnanBalagopal, HåKon Sandsmark, I-Hong, Ilham Firdausi Putra, Imran Salam, Jason Zaman, Jason Zavaglia, jayhpark530, jefby, Jeff Daily, Jeffrey Poznanovic, Jekyll Lai, Jeroen BéDorf, Jerry Shih, jerryyin, jiakai, JiangXIAO, Joe Bowser, Joel Shapiro, ... Версия 1.14.0

Основные функции и улучшения

  • Это первый выпуск версии 1.x, содержащий модуль compat.v2. Этот модуль необходим для того, чтобы библиотеки могли публиковать код, который работает как в версиях 1.x, так и в 2.x. После этого выпуска в Python API версии 2.0 не допускается никаких обратно несовместимых изменений.
  • По умолчанию включаются ядра сжатия MKL-DNN. MKL-DNN динамически выбирает наилучшую реализацию ядра на основе векторной архитектуры процессора. Чтобы отключить их, соберите с помощью --define=tensorflow_mkldnn_contraction_kernel=0.

Поведенческие изменения

  • Установите сокращение потерь по умолчанию как AUTO для повышения надёжности масштабирования потерь с использованием стратегии распределения и пользовательских циклов обучения. AUTO указывает на то, что опция сокращения будет определяться контекстом использования. Почти во всех случаях это значение по умолчанию равно SUM_OVER_BATCH_SIZE. При использовании в области стратегии распределения, вне встроенных циклов обучения, таких как tf.keras compile и fit, мы ожидаем, что значение сокращения будет равно None или SUM. Использование других значений вызовет ошибку.
  • Обертывает потери, переданные в API компиляции (строки и потери v1), которые не являются экземплярами класса Loss v2, в класс LossWrapper. => Теперь все потери будут использовать сокращение SUM_OVER_BATCH_SIZE по умолчанию.
  • Отключите run_eagerly и стратегию распределения, если в модель добавлены символические тензоры с помощью add_metric или add_loss.
  • tf.linspace(start, stop, num) теперь всегда использует «stop» в качестве последнего значения (для num > 1).
  • ResourceVariable и Variable больше не принимают ограничение в конструкторе и не предоставляют его в качестве свойства.
  • Теперь поведение tf.gather является правильным, когда axis=None и batch_dims<0.
  • Создавайте объект каталога GCS только в том случае, если объект ещё не существует.
  • В оптимизации map_vectorization уменьшите степень параллелизма в векторизованном узле карты.
  • Исправление ошибки: потери и градиенты теперь должны более надёжно правильно масштабироваться относительно глобального размера пакета при использовании tf.distribute.Strategy.
  • Обновление косинусного сходства — из косинусного сходства удалён знак отрицания.
  • DType больше нельзя преобразовать в int. Используйте dtype.as_datatype_enum вместо int(dtype), чтобы получить тот же результат.
  • Изменён параметр по умолчанию для накопления градиента для вложений TPU на true.
  • Обратные вызовы теперь регистрируют значения в режиме eager, когда... Добавлено:
  • реализация GPU для tf.linalg.tridiagonal_solve;
  • strings.byte_split;
  • RaggedTensor.placeholder();
  • новый параметр «result_type» для tf.strings.split;
  • возможность передавать в add_update функцию без аргументов, чтобы отключить обновление при установке trainable=False на слое модели, скомпилированной с run_eagerly=True;
  • вариант-оболочка для absl::string_view;
  • аргумент expand_composites для всех методов nest.*;
  • pfor-конвертер для Squeeze;
  • исправление ошибки для градиента tf.tile;
  • экспонирование CriticalSection в core как tf.CriticalSection;
  • использование псевдонимов в Fingerprint64Map;
  • поддержка ResourceVariable для gather_nd;
  • поддержка batch dimensions для операции gather ResourceVariable;
  • вариативное сокращение поддерживается на CPU;
  • расширение tf.function базовой поддержкой аргументов CompositeTensors (таких как SparseTensor и RaggedTensor);
  • добавление шаблонов и интерфейсов для создания таблиц поиска;
  • инструмент квантования после обучения поддерживает квантование весов, общих для нескольких операций. Модели, созданные с помощью этого инструмента, будут использовать типы INT8 для весов и будут исполняться только интерпретаторами начиная с этой версии.

Производительность:

  • включение ядер MKL-DNN по умолчанию. MKL-DNN динамически выбирает наилучшую реализацию ядра на основе векторной архитектуры процессора. Чтобы отключить их, соберите с параметром --define=tensorflow_mkldnn_contraction_kernel=0;
  • поддержка multi-host ncclAllReduce в Distribution Strategy;
  • выставление флага, позволяющего варьировать количество потоков в тестах Python.

Разработка TensorFlow 2.0:

  • добавлено v2 sparse categorical crossentropy metric;
  • разрешены не-тензоры через v2 losses;
  • добавлен UnifiedGRU как новая реализация GRU для tf2.0. Изменена функция активации по умолчанию для GRU с 'hard_sigmoid' на 'sigmoid', а 'reset_after' — на True в версии 2.0. Исторически функция активации для рекуррентных сетей — это 'hard_sigmoid', поскольку она быстрее, чем 'sigmoid'. С новым унифицированным бэкендом между режимами CPU и GPU, поскольку ядро CuDNN использует сигмоид, мы также изменили значение по умолчанию для режима CPU на сигмоид. Таким образом, новый GRU будет совместим с ядрами как для CPU, так и для GPU. Это позволит пользователям с GPU использовать ядро CuDNN по умолчанию и получить 10-кратное увеличение производительности во время обучения. Обратите внимание, что это критическое изменение. Если пользователь хочет использовать предварительно обученную контрольную точку версии 1.x, пожалуйста, создайте слой с GRU(recurrent_activation='hard_sigmoid', reset_after=False), чтобы вернуться к поведению версии 1.x;
  • TF 2.0 — обновление имени метрики всегда отражает то, что пользователь указал при компиляции. Это влияет на следующие случаи: 1) когда имя указано как 'accuracy'/'crossentropy'; 2) когда используется псевдоним функции, например, 'mse'; 3) удаление префикса 'weighted' из имён взвешенных метрик;
  • начало добавления Go-обёртки для C Eager API;
  • image.resize в версии 2.0 теперь поддерживает градиенты для новых ядер изменения размера;
  • удалён tf.string_split из API версии 2;
  • экспонированы tf.contrib.proto.* ops в tf.io (они будут существовать в TF2);
  • обновлён TFLiteConverter API в версии 2.0. Изменения от from_concrete_function к from_concrete_functions;
  • включена работа tf.distribute.experimental.MultiWorkerMirroredStrategy в режиме eager;
  • поддерживается ввод бинарных и -1/1 меток в v2 hinge и squared hinge losses.

TensorFlow Lite:

  • добавлена поддержка tflite_convert в версии 2.0;
  • удалены lite.OpHint, lite.experimental и lite.constant из API версии 2.0.

tf.contrib:

  • добавлен Neural Turing. Реализация описана в https://arxiv.org/abs/1807.08518.

  • Удалите зависимость tf.contrib.timeseries от TF-распределений.

    • tf.data

      • Добавьте num_parallel_reads и передайте Dataset, содержащий имена файлов, в TextLineDataset и FixedLengthRecordDataset.
      • В дальнейшем мы работаем в TF 2.0, это изменение является частью усилий по постепенному преобразованию XYZDataset в DatasetV2, который является официальной версией, которая будет использоваться в TF 2.0 и мотивирована некоторой проблемой совместимости, обнаруженной при перемещении contrib.bigtable в tensorflow_io. Преобразование в DatasetV2 устраняет накладные расходы на поддержку V1, пока мы переходим на TF 2.0.
      • Добавляйте операции набора данных в граф (или создавайте ядра в Eager execution) во время создания объекта Python Dataset вместо того, чтобы делать это во время создания итератора.
      • Добавьте поддержку TensorArrays для tf.data Dataset.
      • Переключите функции tf.data на использование defun, предоставляя аварийный люк для продолжения использования устаревшего Defun.
    • Toolchains

      • CUDNN_INSTALL_PATH, TENSORRT_INSTALL_PATH, NCCL_INSTALL_PATH и NCCL_HDR_PATH устарели. Используйте TF_CUDA_PATHS, который поддерживает список базовых путей через запятую, которые ищутся для поиска библиотек CUDA и заголовков.
      • Код TF теперь находится в tensorflow_core, а tensorflow — это просто виртуальный пакет pip. Для проектов, использующих TensorFlow, никаких изменений кода не требуется, изменение прозрачно.
    • XLA

      • Графики XLA HLO можно проверить с помощью инструмента interactive_graphviz.
    • Estimator

      • Используйте tf.compat.v1.estimator.inputs вместо tf.estimator.inputs.
      • Замените ссылки contrib на tf.estimator.experimental.* для apis в early_stopping.py.

Спасибо нашим участникам

Этот выпуск содержит вклад многих людей из Google, а также:

1e100, 4d55397500, a6802739, abenmao, Adam Weiss, Ag Ramesh, Alan Du, Albin Joy, Alex, Aman Patel, Amit, Amit Kumar Jaiswal, Amit Srivastava, Andreas Eberle, Andy Craze, Anthony Platanios, Armen Poghosov, armenpoghosov, arp95, Arpit Shah, Ashwin Ramaswami, Aurelien Geron, AuréLien Geron, aweers, awesomealex1, Ayush Agrawal, Ben Barsdell, Bharat Raghunathan, Bhavani Subramanian, blairhan, BléNesi Attila, Brandon Carter, candy.dc, Chao Liu, chenchc, chie8842, Christian Hansen, Christian Sigg, Clayne Robison, crafet, csukuangfj, ctiijima, Dan Jarvis, Dan Lazewatsky, Daniel Ingram, Daniel Salvadori, Dave Airlie, David Norman, Dayananda V, Dayananda-V, delock, Denis Khalikov, Deven Desai, Dheeraj Rajaram Reddy, dmitrievanthony, Donovan Ong, Drew Szurko, Duncan Riach, Dustin Neighly, Edward Forgacs, EFanZh, Fei Hu, Felix Lemke, Filip Matzner, fo40225, frreiss, Gautam, gehring, Geoffrey Irving, Grzegorz George Pawelczak, Grzegorz Pawelczak, Gyoung-Yoon Ryoo, HanGuo97, Hanton Yang, Hari Shankar, hehongliang, Heungsub Lee, Hoeseong Kim, I-Hong Jhuo, Ilango R, Innovimax, Irene Dea, Jacky Ko, Jakub Lipinski, Jason Zaman, jcf94, Jeffrey Poznanovic, Jens Elofsson, Jeroen BéDorf, Jia Qingtong, Jiankang, Joe Q, Joe Quadrino, Joeran Beel, Jonas Rauber, Jonathan, Jonathan Kyl, Joppe Geluykens, Joseph Friedman, jtressle, jwu, K Yasaswi Sri Chandra Gandhi, K. Hodges, Kaixi Hou, Karl Lessard, Karl Weinmeister, Karthik Muthuraman, Kashif Rasul, KDR, Keno Fischer, Kevin Mader, kjopek, Koan-Sin Tan, kouml, ktaebum, Lakshay Tokas, Laurent Le Brun, Letian Kang, Li, Guizi, Loo Rong Jie, Lucas Hendren, Lukas Geiger, Luke Han, luxupu, Ma, Guokai, Mahmoud Abuzaina, Mandar Deshpande, manhyuk, Marco Gaido, Marek Drozdowski, Mark Collier, Mark Ryan, mars20, Mateusz Chudyk, Matt Conley, mbhuiyan, mdfaijul, Melissa Grueter, Michael KäUfl, MickaëL Schoentgen, Miguel Morin, Mihail Salnikov, Mike Arpaia, Mike Holcomb, monklof, Moses Marin, Mshr-H, nammbash, Natalia Gimelshein, Nayana-Ibm, neargye, Neeraj Pradhan, Nehal J Wani, Nick, Niels Ole Salscheider. И перевод текста на русский язык:

и tf.version. Перенос всех констант в модуле tf.saved_model в подмодули tf.saved__model. Новые конечные точки добавлены в V1 и V2, но удаление существующих конечных точек применяется только в V2.

  • Устарело поведение, при котором назначение устройства переопределяет размещение внутри диспетчера контекста размещения.

Keras & Python API

  • Добавить в Keras функциональность, аналогичную tf.register_tensor_conversion_function.
  • Модели подклассов теперь можно сохранить с помощью tf.contrib.saved_model.save_keras_model.
  • LinearOperator.matmul теперь возвращает новый LinearOperator.

Новые операции и улучшенная функциональность операций

  • Добавить операцию изменения размера ближайшего соседа.
  • Добавить аргумент ignore_unknown в parse_values, который подавляет ValueError для неизвестных типов гиперпараметров. Также добавить функцию удобства tf.linalg.matvec.
  • tf.einsum() вызывает ValueError для неподдерживаемых уравнений, таких как "ii->".
  • Добавить DCT-I и IDCT-I в tf.signal.dct и tf.signal.idct.
  • Добавить LU-разложение.
  • Добавить квантильную потерю к градиентным деревьям в оценщике.
  • Добавить round_mode к QuantizeAndDequantizeV2, чтобы выбрать алгоритм округления.
  • Добавить операции unicode_encode, unicode_decode, unicode_decode_with_offsets, unicode_split, unicode_split_with_offset и unicode_transcode. Среди прочего, эта операция добавляет возможность кодировать, декодировать и перекодировать различные форматы входного текста в основные кодировки Unicode (UTF-8, UTF-16-BE, UTF-32-BE).
  • Добавить атрибут "unit" к операции substr, который позволяет получить подстроку строки, содержащей символы Юникода.
  • Поддержка широковещательной передачи для Ragged Tensors.
  • SpaceToDepth поддерживает тип данных uint8.
  • Поддерживать многомерную квантильную регрессию в оценщике.
  • Теперь мы используем "div" в качестве стратегии partition_strategy по умолчанию в tf.nn.safe_embedding_lookup_sparse, tf.nn.sampled_softmax и tf.nn.nce_loss. Гиперпараметры игнорируются.

Производительность

  • Улучшить производительность GPU cumsum/cumprod до 300 раз.
  • Добавлена поддержка распада веса в большинстве оптимизаторов встраивания TPU, включая AdamW и MomentumW.

TensorFlow 2.0 Development

  • Добавить инструмент командной строки для преобразования в TF2.0, tf_upgrade_v2.
  • Объединить tf.spectral с tf.signal для TensorFlow 2.0.
  • Изменить функцию активации по умолчанию для LSTM с 'hard_sigmoid' на 'sigmoid' в версии 2.0. Исторически функция активации по умолчанию — 'hard_sigmoid', поскольку она быстрее, чем 'sigmoid'. С новым унифицированным бэкэндом между режимами CPU и GPU, поскольку ядро CuDNN использует сигмоид, мы также меняем значение по умолчанию для режима CPU на сигмоид. Таким образом, LSTM по умолчанию будет совместим с ядром CuDNN и получит 10-кратное увеличение производительности во время обучения. Обратите внимание, что это критическое изменение. Если пользователь хочет использовать предварительно обученную контрольную точку версии 1.x, пожалуйста, создайте слой с LSTM(recurrent_activation='hard_sigmoid'), чтобы вернуться к поведению версии 1.x.

TensorFlow Lite

  • Переместить из tensorflow/contrib/lite в tensorflow/lite.
  • Добавить экспериментальный Java API для внедрения делегатов TensorFlow Lite.
  • Добавить поддержку строк в TensorFlow Lite Java API.

tf.contrib:

  • Добавить плагин файловой системы Apache Ignite для поддержки доступа к Apache IGFS.

  • Отсев теперь принимает аргумент rate, keep_prob устарел.

  • Ссылки на оценщик tf.contrib.estimator были изменены на tf.estimator:

    • tf.contrib.estimator.BaselineEstimator с tf.estimator.BaselineEstimator.
    • tf.contrib.estimator.DNNLinearCombinedEstimator с tf.estimator.DNNLinearCombinedEstimator.
    • tf.contrib.estimator.DNNEstimator с tf.estimator.DNNEstimator. tf.contrib.estimator.LinearEstimator с
    • tf.estimator.LinearEstimator:
      • tf.contrib.estimator.InMemoryEvaluatorHook и tf.estimator.experimental.InMemoryEvaluatorHook;
      • tf.contrib.estimator.make_stop_at_checkpoint_step_hook с tf.estimator.experimental.make_stop_at_checkpoint_step_hook;
      • Выставить tf.distribute.Strategy как новое имя для tf.contrib.distribute.DistributionStrategy;
      • Перенести линейный оптимизатор из contrib в core;
      • Переместить tf.contrib.signal в tf.signal (сохранив псевдонимы в tf.contrib.signal)
      • Пользователи tf.contrib.estimator.export_all_saved_models и связанных с ним должны перейти на tf.estimator.Estimator.experimental_export_all_saved_models.
  • tf.data:

    • добавить tf.data.experimental.StatsOptions(), чтобы настроить параметры для сбора статистики из tf.data.Dataset с использованием StatsAggregator. Добавить вложенную опцию experimental_stats (которая принимает объект tf.data.experimen tal.StatsOptions) в tf.data.Options. Устаревает tf.data.experimental.set_stats_agregator;
    • Оптимизация производительности:
    • добавить tf.data.experimental.OptimizationOptions(), чтобы настроить опции для включения оптимизации производительности tf.data. Добавить вложенную опцию experimental_optimization (которая принимает объект tf.data.experimental.OptimizationOptions) в tf.data.Options. Удалить параметры оптимизации производительности из tf.data.Options и добавить их в tf.data.experimental.OptimizationOptions вместо этого;
    • Включить оптимизацию map_and_batch_fusion и noop_elimination по умолчанию. Их можно отключить, настроив tf.data.experimental.OptimizationOptions, установив map_and_batch = False или noop_elimination = False соответственно. Чтобы отключить все настройки по умолчанию, установите apply_default_optimizations = False;
    • Поддержка параллельного отображения в map_and_filter_fusion;
    • Отключить статическую оптимизацию для входных конвейеров, использующих не ресурсные tf.Variable;
    • Добавить набор данных NUMA-aware MapAndBatch;
    • Устаревший tf.data.Dataset.make_one_shot_iterator() в V1, удалённый из V2, и добавленный tf.compat.v1.data.make_one_shot_iterator();
    • Устарело tf.data.Dataset.make_initializable_iterator() в V1, удалённое из V2, и добавлено tf.compat.v1.data.make_initializable_iterator();
    • Включите поддержку вложенных наборов данных в основных преобразованиях tf.data;
    • Для реализаторов tf.data.Dataset: добавлена tf.data.Dataset._element_structured для замены Dataset.output_{types,shapes,classes};
    • Сделать num_parallel_calls из tf.data.Dataset.interleave и tf.data.Dataset.map работающим в режиме Eager.
  • Инструментальные средства:

    • исправлена совместимость OpenSSL путём избегания EVP_MD_CTX_destroy;
    • добавлены проверки границ при печати предупреждений об устаревании;
    • обновлена зависимость CUDA до 10.0;
    • для сборки с Android NDK r14b добавьте «#include <linux/compiler.h>» в android-ndk-r14b/platforms/android-14/arch-*/usr/include/linux/futex.h;
    • удалены цели :android_tensorflow_lib_selective_registration*, вместо них используйте цели :android_tensorflow_lib_lite*.
  • XLA:

    • переместить функцию RoundToEven в xla/client/lib/math.h;
    • Новая переменная среды TF_XLA_DEBUG_OPTIONS_PASSTHROUGH, установленная в «1» или «true», позволяет параметрам отладки, переданным в операции XRTCompile, передаваться непосредственно в бэкэнд компиляции XLA. Если такая переменная не установлена (на стороне службы), будет передан только ограниченный набор параметров;
    • разрешить операции XRTCompile возвращать ProgramShape, полученную в результате компиляции XLA, в качестве второго аргумента возврата;
    • графики HLO XLA теперь могут быть визуализированы в виде SVG/HTML.
  • Оценщик:

    • заменить все вхождения tf.contrib.estimator.BaselineEstimator на tf.estimator.BasineEstimator. Перевод текста:

tf.contrib.estimator.DNNLinearCombinedEstimator с tf.estimator.DNNLinearCombinedEstimator:

  • Заменить все вхождения tf.contrib.estimator.DNNEstimator на tf.estimator.DNNEstimator.
  • Заменить все вхождения tf.contrib.estimator.LinearEstimator на tf.estimator.LinearEstimator.
  • Пользователи tf.contrib.estimator.export_all_saved_models и связанных с ним должны перейти на tf.estimator.Estimator.experimental_export_all_saved_models.
  • Обновить regression_head до нового Head API для Canned Estimator V2.
  • Переключить multi_class_head на Head API для Canned Estimator V2.
  • Заменить все случаи появления tf.contrib.estimator.InMemoryEvaluatorHook и tf.contrib.estimator.make_stop_at_checkpoint_step_hook на tf.estimator.experimental.InMemoryEvaluatorHook и tf.estimator.experimental.make_stop_at_checkpoint_step_hook.
  • Перенести линейный оптимизатор из contrib в ядро.

Спасибо нашим участникам

Этот релиз содержит вклад многих людей из Google, а также:

Абихав Упадхьяй, Аг Рамеш, акикааа, Алексис Луи, Андерс Хусс, Андреас Мадсен, Эндрю Банчик, Энди Крейз, Антон Дмитриев, Артем Малых, Авижит-Нервана, Балинт Кристиан, Бенджамин Тан Вэй Хао, Бхавани Субраманян, Брендан Финан, Брайан Немсик, Брайан Катлер, Бай Шен, Цао Цзунъянь, Кастиэль, Крис Антаки, Кристиан Голл, Сибифанг, Клейн Робисон, Кодрут Гросу, Конг Сюй, Далмо Сирн, Дэниел Хантер, Дугал Дж. Сазерленд, Эдвард Фагерхольм, ЭФаньЧжэн, Эрик Смистад, Евгений Поляков, Фэйян Чен, Франклин5, Фред Рейсс, Гаутам, геринг, Джеффри Ирвинг, Джордж Стерпу, Гитеа, Гжегож Джордж Павелчак, Гоу Чжун Чжуан, Химкт, Хоэсон Ким, Хуань Ли (李卓桓), Хуян Фей, хюнён, Айзек Бербанк, джоканан, Джекки Ко, Джейсон Фурманек, Джейсон Заман, Хавьер Лураски, Цзян, Чжоулун, Джоак, Джон Лин, Джонатан Уайатт Хеч, Джозеф Йерсли, Джош Гордон, Джулиан Нидермайер, Карл Лессард, Кено Фишер, ланхин, Леон Грасер, леондгарсе, Ли, Гуйцзы, Ли, Ицян, lxl910915, Махмуд Абузайна, манхюк, Марсела Моралес Куисп, маргаретмз, Мэтт Конли, Макс Пумперла, мбхуйян, мдфайджул, Мэн, Пэн, Майкл, Майкл Гильда, мистер Тсджолдер, Мухаммад Вилдан, недагье, Нехал Дж. Вани, NEWPLAN, Ниранджан Хасабнис, Нурти, олит, Пан Даосинь, Педро Монреаль, Пэн Ю, пилларпонд, Пуйя Давуди, цизи, Рохайс Лии, Ричард Ю, Рин Аракак, Роджер Айенгар, сахилбадьял, Сами Кама, Сандип Гири, Скотт Лейшман, Сергей Панев, Сонхун Парк, Шафи Даятар, шэнфуинтел, Шимин Го, Сиджу, сайлент567, Стефан Дюльгеров, стивен, Тао Вэй, Тор Джонсон, Тинбо Лу, томгулосон92, Тунсюань Лю, Тревор Моррис, Ubuntu, Вадим Борисов, вандерлян, вангсию, Вэнь Юнь, Вен-Хэн (Джек) Чун, вэньсичжу, Уильям Д. Айронс, Сяомин (Джейсон) Цуй, Ян Факай (颜发才), Янбо Лян, Янив Блюменфельд, Яш Гауркар, Ичэн Фан, Юн Тан, Ёнджун Ли, Юань (Терри) Тан, Юйсинь Ву, злдробит.

Выпуск 1.12.0

Основные функции и улучшения

  • Модели Keras теперь можно напрямую экспортировать в формат SavedModel (tf.contrib.saved_model.save_keras_model()) и использовать с Tensorflow Serving.
  • Модели Keras теперь поддерживают оценку с помощью tf.data.Dataset.
  • Бинарные файлы TensorFlow создаются со встроенной поддержкой XLA.
  • Добавлен Ignite Dataset в contrib/ignite, который позволяет работать с Apache Ignite.

Исправления ошибок и другие изменения

  • tf.data:

    • Пользователи tf.data теперь могут представлять, получать и устанавливать параметры входных конвейеров TensorFlow с помощью tf.data.Options(), tf.data.Dataset.options() и tf.data.Dataset.with_options() соответственно.
    • Новый API tf.data.Dataset.reduce() позволяет пользователям уменьшить конечный набор данных до одного элемента с помощью предоставленной пользователем функции уменьшения.
    • Новый API tf.data.Dataset.window() позволяет пользователям создавать конечные окна входного набора данных; в сочетании с API tf.data.Dataset.reduce(), это позволяет пользователям реализовывать настраиваемую пакетную обработку.
    • Весь код C++ перемещается в пространство имён tensorflow::data.
    • Добавить поддержку для... num_parallel_calls для tf.data.Dataset.interleave.
  • tf.contrib:

    • удалить tf.contrib.linalg, вместо него использовать tf.linalg;
    • заменить все вызовы tf.contrib.get_signature_def_by_key(metagraph_def, signature_def_key) на meta_graph_def.signature_def[signature_def_key]. Перехват исключения ValueError, которое выбрасывается tf.contrib.get_signature_def_by_key, заменить перехватом исключения KeyError.
  • tf.contrib.data

    • Устаревшее, заменить на tf.data.experimental.

Другие:

  • Вместо jemalloc вернуться к использованию системного malloc, так как это упрощает сборку и имеет сопоставимую производительность;
  • Удалить целочисленные типы из OpDefs tf.nn.softplus и tf.nn.softsign. Это исправление ошибки; эти операции никогда не предназначались для поддержки целых чисел;
  • Разрешить нарезку тензоров по одному измерению;
  • Добавить опцию для расчёта длины строки в символах Unicode;
  • Добавить функциональность для поднарезки тензора;
  • Добавить операцию поиска по порядку (например, lower/upper_bound);
  • Ранее в bijector_impl была ошибка, когда _reduce_jacobian_det_over_event неправильно обрабатывал скалярные ILDJ-реализации;
  • В активном выполнении разрешить повторный вход в контекст GradientTape;
  • Добавить флаг tf_api_version. Если передаётся флаг --define=tf_api_version=2, то bazel будет собирать версию API TensorFlow 2.0. Обратите внимание, что TensorFlow 2.0 находится в активной разработке и на данный момент не имеет гарантий;
  • Добавить дополнительные параметры сжатия в TfRecordWriter;
  • Улучшения производительности для операций полного соответствия регулярных выражений;
  • Заменить tf.GraphKeys.VARIABLES на tf.GraphKeys.GLOBAL_VARIABLES;
  • Удалить поддержку динамического обучения, которая не использовалась.

Спасибо нашим участникам

Этот выпуск содержит вклад многих людей из Google, а также:

(Дэвид) Сиу-Кей Мук, Агр Рамеш, Антон Дмитриев, Артём Соболев, Авиджит-Нервана, Байрен Йи, Бруно Гонсалвес, Бай Шен, candy.dc, Ченг Чен, Клейн Робисон, coder3101, Дао Чжан, Элмс, Фэй Ху, feiquan, Джеффри Ирвинг, Гоучжун Чжуан, hellcom, Хосеонг Ким, imsheridan, Джейсон Фурманек, Джейсон Заман, Дженни Санг, jiefangxuanyan, Йоханнес Банхофер, Джонатан Гомер, Коан-Син Тан, kouml, Лу Ронг Цзе, Лукас Гейгер, манипупопо, Мин Ли, Мориц Крёгер, Науррил, Ниранджан Хасабнис, Пан Даоксин, Пэн Ю, пенгва, расми, Роджер Син, Роланд Фернандес, Сами Кама, Самуэль Матцек, Санджунг Ву, Сергей Лебедев, Сергий Хоменко, шаохуа, Шаохуа Чжан, Шуцзянь2015, Сунита Камбхампати, томгулосон92, Винисиус Камарго, вансюйю, вейданькун, Вен-Хэн (Джек) Чунг, Уильям Д. Айронс, Синь Цзинь, Ян Факай (颜发才), Янбо Лян, Яш Катария, Юн Тан, 在原佐为.

Выпуск 1.11.0

Основные функции и улучшения

  • Nvidia GPU:

    • Предварительно собранные двоичные файлы теперь (начиная с TensorFlow 1.11) собраны против cuDNN 7.2 и TensorRT 4. См. обновлённые руководства по установке: Установка TensorFlow на Ubuntu.
  • Google Cloud TPU:

    • Экспериментальная интеграция tf.data для Keras на Google Cloud TPUs.
    • Экспериментальная / предварительная поддержка активного выполнения на Google Cloud TPUs.
  • DistributionStrategy:

    • Добавьте поддержку multi-GPU DistributionStrategy в tf.keras. Теперь пользователи могут использовать fit, evaluate и predict для распределения своей модели на нескольких графических процессорах.
    • Добавьте multi-worker DistributionStrategy и автономную поддержку клиентов в Estimator. Подробнее см. в README.
  • Добавьте функции C, C++ и Python для запроса ядер.

Критические изменения

  • Keras:
    • Значения по умолчанию для инициализаторов RandomUniform, RandomNormal и TruncatedNormal в tf.keras были изменены, чтобы они соответствовали значениям во внешнем Keras.
    • Критическое изменение: model.get_config() в последовательной модели теперь возвращает конфигурацию. Конфигурационный словарь (согласованный с другими экземплярами модели) вместо списка конфигураций для базовых слоёв.

Исправления ошибок и другие изменения

  • C++:
    • Изменена сигнатура SessionFactory::NewSession, чтобы она могла возвращать осмысленное сообщение об ошибке в случае сбоя.
  • tf.data:
    • Удалён аргумент num_parallel_parser_calls из make_csv_dataset().
    • Dataset.list_files() вызывает исключение во время инициализации, если аргумент не соответствует ни одному файлу.
    • Переименован класс BigTable в BigtableTable для ясности.
    • Документировано использование API облачной Bigtable.
    • Добавлен tf.contrib.data.reduce_dataset, который можно использовать для уменьшения набора данных до одного элемента.
    • Обобщение tf.contrib.data.sliding_window_batch.
  • INC:
    • Улучшения производительности при решении треугольников.
  • tf.contrib:
    • Добавлен аргумент implementation в tf.keras.layers.LocallyConnected2D и tf.keras.layers.LocallyConnected1D. Новый режим (implementation=2) выполняет прямой проход как однократное умножение плотной матрицы, что позволяет значительно ускорить работу в определённых сценариях (но ухудшает производительность в других — см. документацию). Опция также позволяет использовать padding=same.
    • Дополнена документация, разъясняющая различия между tf.fill и tf.constant.
    • Добавлены экспериментальные IndexedDatasets.
    • Добавлена выборочная регистрация цели с использованием облегчённого прото-времени выполнения.
    • В TensorFlow Lite Java добавлены простые классы Tensor и DataType.
    • Поддерживается приведение к типу и от типа uint32 и uint64.
    • Добавлен подкласс Estimator, который может быть создан из SavedModel (SavedModelEstimator).
    • Режимы индекса листа добавлены в качестве аргумента.
    • Допускается другая форма вывода по сравнению с вводом в tf.contrib.image.transform.
    • Порядок state_size в StackedRNNCell изменён на естественный порядок. Чтобы сохранить существующее поведение, пользователь может добавить reverse_state_order=True при создании StackedRNNCells.
    • Устаревший self.test_session() заменён на self.session() или self.cached_session().
    • Непосредственно импортируется tensor.proto.h (транзитивный импорт будет удалён из tensor.h в ближайшее время).
    • Estimator.train() теперь поддерживает tf.contrib.summary.* сводки «из коробки»; каждый вызов .train() теперь создаёт отдельный файл tfevents, а не повторно использует общий.
    • Исправлено поведение FTRL L2-сжатия: градиент от члена сжатия L2 не должен попадать в аккумулятор.
    • Исправлено составление/выполнение toco в Windows.
    • Добавлен класс GoogleZoneProvider для определения зоны, в которой работает Tensorflow на Google Cloud Engine.
    • Теперь безопасно вызывать любую из функций TF_Delete* в C API для nullptr.
    • Некоторые ошибки на Android записываются в logcat.
    • Численные значения FakeQuant в TFLite приведены в соответствие для повышения точности квантованных моделей логического вывода TFLite.
    • Необязательная проверка местоположения корзины для файловой системы GCS.
    • Повышена производительность StringSplitOp & StringSplitV2Op.
    • Повышена производительность операций замены регулярных выражений.
    • TFRecordWriter теперь вызывает ошибку, если .write() завершается неудачно.
    • TPU: более полезные сообщения об ошибках в TPUClusterResolvers.
    • Аргумент legacy_init_op для методов SavedModelBuilder для добавления MetaGraphs устарел. Вместо этого используйте эквивалентный main_op. В рамках этого мы теперь явно проверяем наличие одного main_op или legacy_init_op во время создания SavedModel, тогда как ранее проверка main_op проводилась только во время загрузки.
    • Протокол, используемый для обучения Estimator, теперь настраивается в RunConfig.
    • Повышение производительности решения треугольников.
    • Унифицирован интерфейс RNN-ячеек между TF и Keras. Добавлен новый get_initial_state() в Keras и TF RNN. * cell, который будет использоваться для замены существующего метода zero_state().
  • Обновление инициализации переменных в Keras.
  • Обновления «constrained_optimization» в tensorflow/contrib.
  • Усиленные деревья: добавление режима обрезки.
  • tf.train.Checkpoint по умолчанию не удаляет старые контрольные точки.
  • tfdbg: ограничение общего дискового пространства, занимаемого сброшенными данными тензора, до 100 ГБ. Добавьте переменную среды TFDBG_DISK_BYTES_LIMIT, чтобы можно было регулировать этот верхний предел.

Спасибо нашим участникам

Этот релиз содержит вклад многих людей из Google, а также:

Аапели, Адода, Аг Рамеш, Амог Маннекот, Эндрю Гибиански, Энди Крейз, Анирудх Кул, Орельен Джерон, Авиджит, Авидит-Нервана, Бен, Бенджамин Х. Майара, бхак, Бретт Кунс, Цао Цзунъянь, си Бокман, чирс, Чиканага Томоюки, Клейн Робинсон, косинус0, Цуй Вэй, Дэн Дж., Дэвид, Дэвид Норман, Дмитрий Клименков, Элиэль Ходжман, Флориан Куртиал, fo40225, формат, Джеффри Ирвинг, Грейс Хани, Гжегож Павелкак, Голян Хуа, Гочжонг Чжуан, Герман Звонимир Дошилович, Хуэйян Фэй, Джекер, Ян Хюннемейер, Джейсон Тейлор, Джейсон Заман, Джесси, Цзян, Чжоулун, Цзявей Чжан, Цзе, Джо Йерслай, Йоханнес Шмитц, Джон Перл, Джон Трибенбах, Джонатан, Джонатан Хсеу, Чонмин Парк, Джастин Шенк, karl@kubx.ca, Кейт Ходесдон, Кб Шрирам, Кейси Хаттори, Кеннет Бломквист, Коан-Син Тан, Ли Лянбин, Ли, Ицян, Лоу Ронг Джи, Мадияр, Махмуд Абузайна, Марк Райан, Мэтт Додж, мбхуйян, Мелвин Лжи96, Мигель Мота, Нафис Садат, Нейт Люэр, науррил, Нехал Дж. Вани, Ниалл Моран, Ниранджан Хасабнис, Нишидха Панпалия, нпоу, олит, Пей Чжан, Пэн Ван (Симпенг), Пэн Ю, Филипп Юнд, Прадип Банавара, Пратик Калшетти, qwertWZ, Ракеш Чада, Рэнди Уэст, Рэй Ким, Ролаис Лии, Робин Рихтсфельд, Родриго Сильвейра, Руижи, Сантош Кумар, Себ Бро, Сергей Лебедев, сфудживара, Шаба Абхирам, Шаши, Скрытая Рыба5, Соила Кавуля, Стефан Дюльгеров, Стивен Уинстон, Сунита Камбхампати, Сурри Шоум, Тэхун Ли, Тор Джонс, Тристан Райс, ТШапинский, тукан, тукан9389, Висенте Рейес, Вильмар-Хилоу, Виталий Лаврухин, вангерши, Вейдан.конг, вейданконг, Вен-Хэн (Джек) Чанг, Уильям Д. Айронс, Уим Гленн, XFeiF, Янь Факай (颜发才), Яньбо Лян, Юн Тан, Ёсихиро Ямадзаки, Юань (Терри) Тан, Юань, Человек, Чжао Йонке, Аррон Рикардо Перес-Лопес, Тяньци, Сюй Сяофэй

Выпуск 1.10.1

Исправления ошибок и другие изменения

  • tf.keras:
    • Исправление keras на облачных TPU. Для Windows новые двоичные файлы создаваться не будут.

Выпуск 1.10.0

Основные функции и улучшения

  • Среда выполнения tf.lite теперь поддерживает complex64.

  • Начальная интеграция Google Cloud Bigtable для tf.data.

  • Улучшено поведение локального запуска в tf.estimator.train_and_evaluate, которое не перезагружает контрольные точки для оценки.

  • Теперь RunConfig устанавливает device_filters, чтобы ограничить взаимодействие между рабочими и PS. Это может ускорить обучение и обеспечить чистое завершение работы в некоторых ситуациях. Но если у вас есть задания, требующие взаимодействия между работниками, вам придётся установить пользовательские параметры session_options в вашем RunConfig.

  • Распределения и биекторы перемещены из tf.contrib.distributions в Tensorflow Probability (TFP). tf.contrib.distributions теперь устарел и будет удалён к концу 2018 года.

  • Добавление новых конечных точек для существующих символов Tensorflow. Эти конечные точки станут предпочтительными конечными точками в будущем и могут заменить некоторые существующие конечные точки в будущем. Полный список см. ниже. Новые символы были добавлены в следующие модули: tf.debugging, tf.dtypes, tf.image, tf.io, tf.linalg. ## Breaking Changes

  • Предварительно собранные двоичные файлы теперь (начиная с TensorFlow 1.10) собираются на основе NCCL 2.2 и больше не включают NCCL в бинарный установщик. Использование TensorFlow с несколькими GPU и NCCL требует обновления до NCCL 2.2. См. обновлённые руководства по установке: поддержка TensorFlow GPU и установка TensorFlow из исходного кода.

  • Начиная с TensorFlow 1.11, сборки для Windows будут использовать Bazel. Поэтому мы откажемся от официальной поддержки cmake.

Исправления ошибок и другие изменения

  • tf.data:

    • tf.contrib.data.group_by_reducer() теперь доступен через публичный API.
    • tf.contrib.data.choose_from_datasets() теперь доступен через публичный API.
    • Добавление аргумента drop_remainder к tf.data.Dataset.batch() и tf.data.Dataset.padded_batch(), устаревание tf.contrib.data.batch_and_drop_remainder() и tf.contrib.data.padded_batch_and_drop_remainder().
  • tf.estimator:

    • Теперь Estimator используют пользовательские средства сохранения, включённые в EstimatorSpec для сохранения SavedModels во время экспорта.
    • В EstimatorSpec теперь будет добавлен выходной прогноз по умолчанию для экспорта, если export_output не предоставлен, что устраняет необходимость явно включать объект PredictOutput в model_fn для простых случаев использования.
    • Поддержка sparse_combiner в консервированных линейных оценщиках.
    • Добавлена пакетная нормализация в DNNClassifier, DNNRegressor и DNNEstimator.
    • Добавление поддержки ранжирования для усиленных деревьев.
    • Добавление опции смещения центра для усиленных деревьев.
  • Добавление аргументов synchronization и aggregation в get_variable(). Эти аргументы будут использоваться для распределённых переменных.

  • Добавление аргументов synchronization и aggregation в слой add_weight() API. Эти аргументы будут использоваться для распределённых переменных.

  • Операции tf.losses.* не добавляются в глобальную коллекцию при выполнении в режиме ожидания (чтобы избежать утечки памяти).

  • Поддержка различных каталогов сводных данных и контрольных точек в tf.train.MonitoredTrainingSession().

  • Добавлены ячейки IndRNN, IndyGRU и IndyLSTM в tf.contrib.rnn.

  • Добавьте безопасные статические фабричные функции для SparseTensor и преобразуйте все CHECK в DCHECK. Использование конструктора напрямую небезопасно и не рекомендуется.

  • Сделайте пул соединений клиента Bigtable настраиваемым и увеличьте количество соединений по умолчанию для повышения производительности.

  • Добавлена производная tf.random_gamma относительно параметра альфа.

  • Добавлена производная функций tf.igamma(a, x) и tf.igammac(a, x) относительно a.

  • Модифицированные функции Бесселя нулевого и первого порядка.

  • Добавить Bijector FillTriangular для создания треугольных матриц.

  • Добавлена поддержка типа III DCT и tf.spectral.idct(type=2|3).

  • Правильно обрабатывать CuDNN RNN вес, загруженный при вложении в TimeDistributed.

  • Добавление поддержки веса для каждого элемента в WALSComputePartialLhsAndRhsOp.

  • Операторы ZerosLike и OnesLike обрабатываются как константы инструментом преобразования графа.

  • Гамма-распределение и производные распределения (бета, Дирихле, t-распределение Стьюдента, обратное гамма-распределение) теперь полностью перепараметризированы.

  • Java: экспериментальные классы-оболочки для упрощения генерации графов. Спасибо @karllessard и @kbsriram.

  • Сборка и компоновка защищённых компонентов gRPC (переход от незащищённой зависимости grpc к защищённой).

  • Добавление новых конечных точек для существующих символов TensorFlow. Эти конечные точки станут предпочтительными конечными точками в будущем и могут заменить некоторые существующие конечные точки в будущем. Список новых конечных точек:

    • Новые конечные точки в пространстве имён tf.image: tf.image.extract_image_patches.
    • Новые конечные точки в пространстве имён tf.debugging: tf.debugging.check_numerics, tf.debuging.is_finite, tf.debugging.is_inf, tf.debugging.is_nan.
    • Новая конечная точка в пространстве имён tf.dtypes: tf.dtypes.as_string. in tf.io namespace:
  • decode_base64,

  • decode_compressed,

  • decode_json_example,

  • decode_raw,

  • encode_base64,

  • matching_files,

  • parse_tensor,

  • read_file,

  • write_file.

in tf.linalg namespace:

  • cross,
  • tensor_diag (corresponds to diag),
  • tensor_diag_part (corresponds to diag_part).

in tf.manip namespace:

  • batch_to_space_nd,
  • gather_nd,
  • reshape,
  • reverse,
  • scatter_nd,
  • space_to_batch_nd,
  • tile.

in tf.math namespace:

  • acos,
  • acosh,
  • add,
  • asin,
  • asinh,
  • atan,
  • atan2,
  • atanh,
  • betainc,
  • ceil,
  • cos,
  • cosh,
  • digamma,
  • equal,
  • erfc,
  • exp,
  • expm1,
  • floor,
  • greater,
  • greater_equal,
  • igamma,
  • igammac,
  • invert_permutation,
  • less,
  • less_equal,
  • lgamma,
  • log,
  • log1p,
  • logical_and,
  • logical_not,
  • logical_or,
  • maximum,
  • minimum,
  • not_equal,
  • polygamma,
  • reciprocal,
  • rint,
  • rsqrt,
  • segment_max,
  • segment_mean,
  • segment_min,
  • segment_prod,
  • segment_sum,
  • sin,
  • sinh,
  • softplus,
  • softsign,
  • squared_difference,
  • tan,
  • unsorted_segment_max,
  • unsorted_segment_min,
  • unsorted_segment_prod,
  • unsorted_segment_sum,
  • zeta.

in tf.quantization namespace:

  • dequantize,
  • fake_quant_with_min_max_args,
  • fake_quant_with_min_max_args_gradient,
  • fake_quant_with_min_max_vars,
  • fake_quant_with_min_max_vars_gradient,
  • fake_quant_with_min_max_vars_per_channel,
  • fake_quant_with_min_max_vars_per_channel_gradient.

in tf.strings namespace:

  • join (corresponds to string_join),
  • regex_replace,
  • to_number (corresponds to string_to_number),
  • strip (corresponds to string_strip),
  • substr,
  • to_hash_bucket (corresponds to string_to_hash_bucket),
  • to_hash_bucket_fast (corresponds to string_to_hash_bucket_fast),
  • to_hash_bucket_strong (corresponds to string_to_hash_bucket_strong).

Thanks to our Contributors

This release contains contributions from many people at Google, as well as: Ag Ramesh, Alex Wiltschko, Alexander Pantyukhin, Amogh Mannekote, An Jiaoyang, Andrei Nigmatulin, Andrew Ginns, BjøRn Moholt, Brett Koonce, Chengzhi Chen, Chinmay Das, Christian Ertler, Christoph Boeddeker, Clayne Robison, Courtial Florian, ctiijima, Dan Douthit, Dan J, Dan Ringwalt, EFanZh, Emanuele Ballarin, eqy, Evgeniy Zheltonozhskiy, Freedom" Koan-Sin Tan, FréDéRic Branchaud-Charron, G K, gracehoney, Guillaume Klein, Guozhong Zhuang, Hsien-Yang Li, hsm207, ImSheridan, Jayaram Bobba, Jiandong Ruan, Jie, Joel Shor, Jonas Rauber, Jongmin Baek, jsawruk, Karan Kaw, Karl Lessard, karl@kubx.ca, Kb Sriram, KinmanLam, leiiwang, Li, Yiqiang, Loo Rong Jie, Mahmoud Abuzaina, Mahmoud Aslan, ManHyuk, Martin Patz, Martin Zeitler, mktozk, Mohammad Ashraf Bhuiyan, mrTsjolder, Naman Bhalla, Nick Felt, Nicolas Lopez, Niranjan Hasabnis, Nishidha Panpaliya, Nitish, nrstott, Nutti, Parag Jain, PeterLee, Philipp Jund, Rach L, Rafal Wojdyla, Roland Zimmermann, Sergei Lebedev, SneakyFish5, Soila Kavulya, Sriram Veturi, Steven Schmatz, Taehoon Lee, Tang, Wenyi, Taras Sereda, Ted Chang, Tim Zaman, Tristan Rice, tucan, vchigrin, Vikram Tiwari, Vincent, WeberXie, William D. Irons, Yan Facai (颜发才), Yong Tang, Yu Yi, Yuxin Wu, Zé ViníCius

Release 1.9.0

Major Features And Improvements

Критические изменения

  • Если вы открываете пустые области переменных, замените variable_scope('', ...) на variable_scope(tf.get_variable_scope(), ...).
  • Заголовки, используемые для создания пользовательских операций, были перемещены из site-packages/external в site-packages/tensorflow/include/external.

Исправления ошибок и другие изменения

  • tfe.Network устарел. Пожалуйста, наследуйте от tf.keras.Model.
  • Имена слоёв изменились в следующих условиях:
    • Использование tf.keras.layers с настраиваемыми областями переменных.
    • Использование tf.layers в подклассе tf.keras.Model класса. См. здесь (https://www.tensorflow.org/versions/r1.9/api_docs/python/tf/layers) для получения более подробной информации.
  • tf.data:
    • Теперь Dataset.from_generator() принимает список аргументов args, чтобы создать вложенные генераторы.
    • Теперь Dataset.list_files() даёт детерминированные результаты при shuffle=False или передаётся seed.
    • tf.contrib.data.sample_from_datasets() и tf.contrib.data.choose_from_datasets() упрощают выборку или детерминированный выбор элементов из нескольких наборов данных.
    • tf.contrib.data.make_csv_dataset() теперь поддерживает разрывы строк в заключённых в кавычки строках, и два редко используемых аргумента удалены.
    • (C++) DatasetBase::DebugString() теперь является const.
    • (C++) DatasetBase::MakeIterator() был переименован в DatasetBase::MakeIteratorInternal().
    • (C++) Был добавлен метод IteratorBase::Initialize(), который поддерживает создание ошибок во время построения итератора.
  • Ускоренное выполнение:
    • Добавлена возможность приостанавливать запись операций для вычисления градиента через tf.GradientTape.stop_recording.
    • Обновлена документация, вводная часть. Сдалбсу, Сергей Хоменко, Сынгву Чой (Бигги), Сейед Маджид Азими, Шаонин Зенг, шэнфуинтелл, Сиу Кей, Мук, Смит Шилу, Соонсон, Стефан Шветер, Сухван Ким, Сунита Камбхампати, Тэхун Ли, тамимаддари82, Танг, Вэни, Тед Чанг, у2тейки, Уткарш Упадхайай, Вадим Марковцев, воэгтлель, Вай Хон Лоу, вангсию, Венхао Ху, венхао точка ху, Уильям Д. Айронс, Ян Фацай (颜发才), Янбо Лян, Ихонг Ван, Йили (Доли) Янг, Юн Тан, Юань (Терри) Тан

Release 1.8.0

Основные функции и улучшения

  • Теперь можно передать tf.contrib.distribute.MirroredStrategy() в tf.estimator.RunConfig(), чтобы запустить модель Estimator на нескольких GPU на одном компьютере.
  • Добавлена функция tf.contrib.data.prefetch_to_device(), которая поддерживает предварительную загрузку данных в память GPU.
  • Появились Gradient Boosted Trees как готовые Estimators: BoostedTreesClassifier, BoostedTreesRegressor.
  • Добавлен 3-е поколение конфигурации пайплайна для Cloud TPUs, что улучшает производительность и удобство использования.
  • tf.contrib.bayesflow перемещается в собственный репозиторий.
  • Добавлены tf.contrib.{proto,rpc}, которые позволяют выполнять общий анализ proto и коммуникацию RPC.

Исправления ошибок и другие изменения

  • tf.data:
    • Добавлена tf.contrib.data.prefetch_to_device, которая позволяет предварительно загружать элементы набора данных в память GPU.
    • Добавлена tf.contrib.data.AUTOTUNE, которая позволяет среде выполнения tf.data автоматически настраивать размеры буфера предварительной загрузки в зависимости от вашей системы и среды.
    • Добавлена tf.contrib.data.make_csv_dataset для создания наборов данных из CSV-файлов.
  • Eager Execution:
    • С включенным eager execution наборы данных теперь можно использовать как стандартные итераторы Python (for batch in dataset:). Теперь можно использовать Dataset.__iter__() и Dataset.make_one_shot_iterator(), чтобы создавать итераторы при включенном eager execution.
    • Включено автоматическое размещение устройства (т. е. использование GPU, если он доступен автоматически, без необходимости явного указания with tf.device(“/gpu:0”)) (исправляет #14133).
    • tf.GradientTape перемещён из contrib.
  • tf.keras:
    • Добавлен набор данных fashion mnist.
    • Новые функции предварительной обработки данных: image/random_brightness, sequence/TimeseriesGenerator и text/hashing_trick.
  • Ускоренная линейная алгебра (XLA):
    • Выбор и разброс в утилите и оценщике теперь используют лексикографический порядок для разрешения связей.
  • TensorFlow Debugger (tfdbg) CLI:
    • Во время операций с тензорным фильтром разрешите исключать узлы с помощью регулярных выражений.
    • Исправлены ложные фоновые цвета в некоторых текстовых терминалах.
  • tf.contrib:
    • Добавьте мета-распределение BatchReshape, которое изменяет форму пакетных измерений.
    • tf.contrib.layers.recompute_grad работает для явной контрольной точки градиента на TPU.
    • Добавить tf.contrib.framework.argsort.
    • Разрешить DNNBoostedTreeCombinedEstimator работать с основными версиями столбцов функций и потерь.
    • Добавление нелинейных операций деформации изображения: tf.contrib.image.sparse_image_warp, tf.contrib.image.dense_image_warp и tf.contrib.image.interpolate_spline.
    • Исправить ошибку в tf.contrib.opt.MultitaskOptimizerWrapper, где типы тензоров не совпадали.
  • Другое:
    • Построение низкоуровневого графа теперь вызывает C API TensorFlow. Это изменение должно быть невидимым для большинства пользователей, но его можно отключить, установив переменную среды TF_C_API_GRAPH_CONSTRUCTION=0 в этом выпуске. В будущих выпусках возможность отключить это изменение будет удалена. Пожалуйста, создайте ошибку, если вы обнаружите, что используете этот аварийный люк.
    • Добавить описание форм и ссылку на учебник в ноутбуке в tf.distributions.Distribution.
    • Обновить операции разброса:
      • Добавить tf.scatter_min и tf.scatter_max.
      • Расширить операции разброса для работы со скалярным параметром обновления.
    • Переместить cuDNN RNN ops в ядро для использования только в кодовой базе TensorFlow.
    • Добавить поддержку float64 для Conv2d, Conv2dBackpropInput и Conv2dBackpropFilter.
    • Добавить поддержку float64 для AvgPool/AvgPoolGrad.
    • Сделать область имени графа локальной для потока, чтобы они правильно работали в многопоточных средах.
    • Обновите библиотеку синхронизации nsync, чтобы избежать медленных примитивов в Linux.
    • Убрана необходимость помещать... nsync/public on C include path when building custom ops.
  • Добавить tf.image.psnr, tf.image.ssim, tf.image.ssim_multiscale, tf.image.image_gradients, tf.image.sobel_edges.
  • Добавить ссылки на https://js.tensorflow.org.
  • Исправить неоднородность ортогональных матриц.
  • Устранить ошибку, из-за которой сводные данные многоизображений Estimator отображались неправильно.

The cancellation logic of the RPC op contains a concurrency error. Исправление было отправлено в master и будет частью следующего выпуска.

Спасибо нашим участникам

Этот выпуск содержит вклады многих людей из Google, а также: 4d55397500, Aghasy, Alan Du, Alan Lee, Alan Yee, Alex Wiltschko, Animesh Karnewar, Ankit Gupta, Anton Matosov, Aris L, Ben Barsdell, Brent Yi, Brett Koonce, Carl Thomé, cbockman, Chikanaga Tomoyuki, Chris Tava, CéDric Deltheil, Dahan Gong, Dalmo Cirne, Daniel Erenrich, David Norman, DavidNorman, Edd Wilder-James, Fanjin Zeng, Felix Abecassis, fo40225, George Sterpu, Giovanni Terlingen, Gor Baghdasaryan, Guillaume Klein, Hanchen Li, Ilya Polenov, Jakub Kolodziejczyk, Jason Sadler, Jayaram Bobba, Jerry Liu, jinghuangintel, Jiongyan Zhang (张炯衍), Joel Shor, Jong Wook Kim, Julian Eisenschlos, Karl Lessard, Krish Ravindranath, Loo Rong Jie, Lukas Geiger, Luke Iwanski, Mahmoud Abuzaina, ManHyuk, Marvin Richter, Maximilian Mitchell, Mohammad Ashraf Bhuiyan, msofka, Mustafa Kasap, Nathan Burnham, Nathan Luehr, Naveen Marri, ngc92, nio1814, Oleg Zabluda, Ou Changkun, Panos Ipeirotis, Paul Van Eck, Peter Lee, Piotr Czapla, qjivy, Rholais Lii, Rodrigo Formigone, Russell Klopfer, ryantimjohn, Sang Han, SebastiáN RamíRez, shengfuintel, Siby Jose Plathottam, Silver Chan, Stanislaw Antol, Taehoon Lee, Tarang Chugh, Ted Chang, Thomas Bastiani, Xian Xu, Xiaoming (Jason) Cui, Yan Facai (颜发才), yaox12, Yashal Shakti Kanungo, Yong Tang, Yuan (Terry) Tang, Yuxin Wu, Ziyue(Louis) Lu.

Выпуск 1.7.0

Основные функции и улучшения

  • Режим Eager выходит из contrib, попробуйте tf.enable_eager_execution().
  • Переписывание графа, эмулирующее квантование с фиксированной точкой, совместимое с TensorFlow Lite, поддерживается новым пакетом tf.contrib.quantize.
  • Легко настраивайте вычисление градиента с помощью tf.custom_gradient.
  • Плагин TensorBoard Debugger, графический пользовательский интерфейс (GUI) TensorFlow Debugger (tfdbg), теперь находится в альфа-версии.
  • Экспериментальная поддержка чтения базы данных sqlite как Dataset с новым tf.contrib.data.SqlDataset.
  • Добавлен распределённый мьютекс / критическая секция в tf.contrib.framework.CriticalSection.
  • Улучшена обработка текста с помощью tf.regex_replace.
  • Простой и эффективный ввод последовательности с tf.contrib.data.bucket_by_sequence_length.
  • Начальная поддержка tf.contrib.tensorrt, которая позволяет использовать собственный TensorRT в TensorFlow.

Исправления ошибок и другие изменения

  • Ускоренная линейная алгебра (XLA):
    • Добавить поддержку MaxPoolGradGrad для XLA.
    • Проход CSE от Tensorflow теперь отключён в XLA.
  • tf.data:
    • tf.data.Dataset:
      • Добавить поддержку для создания ядер op-операций C++ в качестве внешних библиотек с использованием механизма tf.load_op_library().
      • Теперь Dataset.list_files() по умолчанию перемешивает свой вывод.
      • Dataset.shuffle(..., seed=tf.constant(0, dtype=tf.int64)) теперь выдаёт ту же последовательность элементов, что и Dataset.shuffle(..., seed=0).
    • Добавьте аргумент num_parallel_reads в tf.data.TFRecordDataset.
  • tf.contrib:
    • tf.contrib.bayesflow.halton_sequence теперь поддерживает рандомизацию.
    • Добавить поддержку скаляров в tf.contrib.all_reduce.
    • Добавить effective_sample_size к tf.contrib.bayesflow.mcmc_diagnostics.
    • Добавить potential_scale_reduction к tf.contrib.bayesflow.mcmc_diagnostics.
    • Добавить биекторы BatchNormalization, Kumaraswamy.
    • Устаревший tf.contrib.learn. Пожалуйста, ознакомьтесь с contrib/learn/README.md для получения инструкций о том, как преобразовать существующий код.
    • tf.contrib.data
      • Удалить устаревший tf.contrib.data.Dataset, tf.contrib.data.Iterator, tf.contrib.data.FixedLengthRecordDataset, tf.contrib.data.TextLineDataset и tf.contrib.data.TFRecordDataset: добавлены bucket_by_sequence_length, sliding_window_batch и make_batched_features_dataset.

Удалён не поддерживаемый tf.contrib.ndlstm, его можно найти на GitHub по адресу: https://github.com/tmbarchive/tfndlstm.

Большая часть tf.contrib.bayesflow перемещена в собственный репозиторий tfp.

  • Другие изменения:
    • tf.py_func теперь сообщает полную трассировку стека при возникновении исключения.
    • Интеграция TPUClusterResolver с интеграцией GKE для облачных TPU.
    • Добавление библиотеки для статистического тестирования семплеров.
    • Добавление помощников для потоковой передачи данных с виртуальной машины GCE на облачный TPU.
    • Интеграция ClusterResolvers с TPUEstimator.
    • Унификация интерфейса metropolis_hastings с ядром HMC.
    • Перемещение свёртки LIBXSMM в отдельный флаг --define, чтобы они были отключены по умолчанию.
    • Исправление лямбды MomentumOptimizer.
    • Уменьшение шаблонов в tfp.layers с помощью программируемых докстрингов.
    • Добавление auc_with_confidence_intervals, метода вычисления AUC и доверительного интервала со сложностью O(n log n).
    • Теперь regression_head принимает настраиваемую функцию связи, чтобы пользователь мог определить свою собственную функцию связи, если array_ops.identity не соответствует требованиям.
    • Исправлены поведения initialized_value и initial_value для ResourceVariables, созданных из прототипа VariableDef.
    • Добавлен TensorSpec для представления спецификации тензоров.
    • Постоянный проход теперь детерминирован.
    • Поддержка типа данных float16 в tf.linalg.*.
    • Добавлен tf.estimator.export.TensorServingInputReceiver, который позволяет tf.estimator.Estimator.export_savedmodel передавать необработанные тензоры функциям модели.

Устаревания

  • TensorFlow 1.7 может быть последним выпуском, поддерживающим версии Cuda ниже 8.0. Начиная с выпуска TensorFlow 1.8, 8.0 будет минимальной поддерживаемой версией.
  • TensorFlow 1.7 может быть последним выпуском, поддерживающим версии cuDNN ниже 6.0. Начиная с выпуска TensorFlow 1.8, 6.0 будет минимальной поддерживаемой версией.

Благодарности нашим участникам

Этот выпуск содержит вклад многих людей из Google, а также:

4d55397500, Abe, Alistair Low, Andy Kernahan, Appledore, Ben, Ben Barsdell, Boris Pfahringer, Brad Wannow, Brett Koonce, Carl Thomé, cclauss, Chengzhi Chen, Chris Drake, Christopher Yeh, Clayne Robison, Codrut Grosu, Daniel Trebbien, Danny Goodman, David Goodwin, David Norman, Deron Eriksson, Donggeon Lim, Donny Viszneki, DosLin, DylanDmitri, Francisco Guerrero, Fred Reiss, gdh1995, Giuseppe, Glenn Weidner, gracehoney, Guozhong Zhuang, Haichen "Hc" Li, Harald Husum, harumitsu.nobuta, Henry Spivey, hsm207, Jekyll Song, Jerome, Jiongyan Zhang, jjsjann123, John Sungjin Park, Johnson145, JoshVarty, Julian Wolff, Jun Wang, June-One, Kamil Sindi, Kb Sriram, Kdavis-Mozilla, Kenji, lazypanda1, Liang-Chi Hsieh, Loo Rong Jie, Mahesh Bhosale, MandarJKulkarni, ManHyuk, Marcus Ong, Marshal Hayes, Martin Pool, matthieudelaro, mdfaijul, mholzel, Michael Zhou, Ming Li, Minmin Sun, Myungjoo Ham, MyungsungKwak, Naman Kamra, Peng Yu, Penghao Cen, Phil, Raghuraman-K, resec, Rohin Mohanadas, Sandeep N Gupta, Scott Tseng, seaotterman, Seo Sanghyeon, Sergei Lebedev, Ted Chang, terrytangyuan, Tim H, tkunic, Tod, vihanjain, Yan Facai (颜发才), Yin Li, Yong Tang, Yukun Chen, Yusuke Yamada.

Выпуск 1.6.0

Критические изменения

  • Готовые двоичные файлы теперь создаются с использованием CUDA 9.0 и cuDNN 7.
  • В готовых двоичных файлах будут использоваться инструкции AVX. Это может нарушить работу TF на старых процессорах.

Основные функции и улучшения

  • Новый внутренний API оптимизатора для переменных без слотов. Потомки AdamOptimizer, которые обращаются к _beta[12]_power, необходимо обновить.
  • tf.estimator.{FinalExporter,LatestExporter} теперь экспортируют урезанные SavedModels. Это улучшает прямую совместимость SavedModel.
  • Поддержка FFT добавлена в XLA CPU/GPU.

Исправления ошибок и другие изменения

  • Обновления документации:
    • добавлена вторая версия «Приступая к работе», которая предназначена для новичков в ML;
    • разъяснена документация по параметру resize_images.align_corners;
    • дополнительная документация для TPUs.
  • Google Cloud. Улучшение кэширования файловой системы GCS.

Исправления ошибок:

  • Исправлена ошибка, из-за которой переменные целочисленных массивов получали неправильные формы.
  • Исправлены ошибки в реализации Adadelta на CPU и GPU.
  • Исправлена ошибка в обработке import_meta_graph переменных с разделением при импорте в область видимости. ВНИМАНИЕ: это может привести к нарушению загрузки контрольных точек графов с переменными с разделением после использования import_meta_graph с аргументом import_scope, отличным от пустого.
  • Исправлена ошибка в автономном отладчике, которая препятствовала просмотру событий.
  • Добавлен метод WorkerService.DeleteWorkerSession в интерфейс gRPC для устранения утечки памяти. Убедитесь, что ваши главный и рабочий серверы используют одну и ту же версию TensorFlow, чтобы избежать проблем совместимости.
  • Исправлена ошибка в реализации peephole блока LSTM.
  • Исправлена ошибка путём приведения типа данных log_det_jacobian к соответствию log_prob в TransformedDistribution.
  • Исправлена ошибка в обработке import_meta_graph переменных с разделением.
  • Все разделы целочисленной переменной инициализируются формой неразделённой переменной; после этого изменения они инициализируются правильно.

Прочее:

  • Добавлена необходимая поддержка формы для bfloat16.
  • Реализован способ запуска операций с использованием пошаговой функции в MonitoredSession.
  • Добавлен вероятностный слой DenseFlipout.
  • Новый флаг ignore_live_threads доступен в train. Если установлено значение True, он будет игнорировать потоки, которые остаются запущенными при разрушении инфраструктуры после успешного завершения обучения, вместо того чтобы вызывать RuntimeError.
  • Рестандартизирован DenseVariational как более простой шаблон для других вероятностных слоёв.
  • tf.data теперь поддерживает компоненты tf.SparseTensor в элементах набора данных.
  • Теперь можно перебирать Tensors.
  • Разрешить операциям SparseSegmentReduction иметь отсутствующие идентификаторы сегментов.
  • Модифицирована пользовательская стратегия экспорта для учёта многомерных разреженных разбиений с плавающей запятой.
  • Операции Conv2D, Conv2DBackpropInput, Conv2DBackpropFilter теперь поддерживают произвольное расширение с поддержкой GPU и cuDNNv6.
  • Estimator теперь поддерживает Dataset: input_fn может возвращать Dataset вместо Tensors.
  • Добавить RevBlock, реализацию остаточных слоёв с эффективным использованием памяти.
  • Уменьшить внутреннюю фрагментацию BFCAllocator.
  • Добавить cross_entropy и kl_divergence в tf.distributions.Distribution.
  • Добавить tf.nn.softmax_cross_entropy_with_logits_v2, который позволяет выполнять обратное распространение относительно меток.
  • Бэкенд GPU теперь использует ptxas для компиляции сгенерированного PTX.
  • Протокольный дамп буфера назначения теперь детерминирован.
  • Изменить вложение op для использования параллельной версии DynamicStitch.
  • Поддержка разреженных многомерных столбцов признаков.
  • Ускорить случай для разреженных столбцов с плавающей точкой, имеющих только 1 значение.
  • Разрешить разреженным столбцам с плавающей точкой поддерживать многозначные столбцы признаков.
  • Добавить quantile в tf.distributions.TransformedDistribution.
  • Добавить поддержку NCHW_VECT_C для tf.depth_to_space на GPU.
  • Добавить поддержку NCHW_VECT_C для tf.space_to_depth на GPU.

Изменения API

  • Атрибут SqueezeDims переименован в Axis в C++ API для операции Squeeze.
  • Функция Stream::BlockHostUntilDone теперь возвращает статус, а не логическое значение.
  • Незначительный рефакторинг: перемещение файлов статистики из stochastic в common и удаление stochastic.

Известные ошибки

  • Использование XLA:GPU с CUDA 9 и CUDA 9.1 приводит к мусорным результатам и/или ошибкам CUDA_ILLEGAL_ADDRESS. Google обнаружил в середине декабря 2017 года, что компилятор PTX-to-SASS в CUDA 9 и CUDA 9.1 иногда неправильно вычисляет бит переноса при разложении 64-битных адресных вычислений с большими смещениями (например, load [x + large_constant]) на 32-битную арифметику в SASS. В результате эти версии ptxas неправильно компилируют большинство программ XLA, использующих более 4 ГБ временной памяти. Это приводит к мусорным результатам и/или ошибкам CUDA_ERROR_ILLEGAL_ADDRESS. Ожидается исправление в CUDA 9.1.121 в конце февраля 2018 года. Мы не... Кликэбл линкс ин зэ кьюрс ю-и.
  • Ранатайм профилер эт зэ оп левеланд зэ пайтон сорс лайн левела виз зэ ран - пи эмэндад комэнд.
  • Иншэл релиз оф зэ статэстикл дистрибушн лайбрари ти эф. дистрибушнс.
  • Джипи ай кернэлс энд спид импрувментс фор юнэри ти эф. уэр и ти эф. эн н. топ кей.
  • Монотэнэкэнт этеншнон уарперс эдэд ту ти эф. контриб сек ту сек.
  • Эддэт ти эф. контриб сигнал, э лайбрари фор сигнал просэсинг праймэтивс.
  • Эддэт ти эф. контриб ресамплер, контэйнинг си пи ю и джипи ай оуп фор диффирэншэббл рэсамплинг оф имэджес.

Брейкэнг чейнджес ту зэ эй пи ай

  • ти эф. риваитэконфиг вус рэмовд фром зэ пайтон эй пи ай афтер биин авайлэбл ин 1.2 релиз кэндидэтс (ит вус науэр ин эн актуал релиз). Граф рувингист стилл эвайлэбэл, джаст нот эс ти эф. риваитэконфиг. Инстэд эдд эт эн экспличт импорт.
  • Брейкэн чейндж ту ти эф. контриб дэйта. датасэт эй пи айс уот экспэкт эн нэстэрд стрэктчэ. Листс ар нау мэдэ ту тэплз ин эксистэн код. Ин аддишн, диктс ар нау саппортэд ас эн нэстэрд стрэктчэ.

Чейнджес ту контриб эй пи айс

  • Эдс ти эф. контриб эн эн ранг сэмплд софтмакс лосс, э сэмплд-софтмакс вэриант уот кан импрув ранг лосс.
  • ти эф. контриб мэтрикс. стримингов кэвэриас, стримингов пирсон коррэлатион модэфйд ту рен нан уэн зей хэв син лэс ор игэл ту 1 юнит оф вэйт.
  • Эдс тайм сэрис моделс ту контриб. Си контриб тайм сэриз реадми точка мэдэ фор дэтайлс.
  • Эдс фулли коннектед оп ту тенсфорлоу/лайт/скэма фбс.

Наун изерс

  • Тенсорфлоу_джипи компилэйшн фэйлс виз байзл ноль пять три.

Баг фиксес энд аутэр чейнджес

  • Фиксес страйдз энд бегин дайтэ тип мискматч уэн слайсин визин инт шестьдесят четыре тэнар индекс ин пайтон.

  • Импрувд конволюшн паддинг докумэнтэшен.

  • Адд э тэг констант, джипи, ту прэзэнт граф виз джипи суппорт.

  • савед модел. ютилс нау саппорт спарстэн тэнарс транспарэнтли.

  • э мор эфышэнт имплэмэнтэшин оф нон мэкс суппрэшн.

  • адд суппорт фор зэ шринкаж тип эл ту фтрл оптимизер ин адишн ту зэ онлайн эл ту ит олрэди саппортс.

  • фик нэгитив вэриэнс ин момэнтс калкулэйшн.

  • экспанд юник оп бэнчмарк тестс ту колэр морэ коллайшн кэйсес.

  • импрувс стабилити оф джи си эс файлэсистем он макинтош.

  • адд тайм эстимэйшн ту хло кост аналисис.

  • фиксд зэ баг ин эстиметор уат пэрс ин констрактор вус нот э дипкопи оф зэ юзэр провидд уан. Зис багс инэвидэнтли энэблд юзэ ту матч зэ пэрс афтер зэ криэйшн оф эстиметор, лэдин ту потэншиалли ундефинэд бэхавиор.

  • эддэд наун чек фор сав_пэт ин савер. рестор.

  • рэджистр девицс андер зэр легэси нэймс ин девайс мэнгэр ту илз зэ трэнсэшэн ту кластэр спэц пропэгейтэд конфигурэйшэнс.

  • вэктор экспонэнциал эддэд ту дистрибушнс.

  • адд э бит вис модуль виз бит вис энд, бит вис ор, бит вис ксор, энд инвэрт функшэнс.

  • адд фиксэд грид одэ интэгрэйшэн рутэнс.

  • аллов пасин бундс ту спайпи оптимизер интерфейс.

  • коррэкнэсс фиксес фор ффт ленгтх парэмэтр ту ти эф. спектрал эрэфт энд ти эф. спектрал ирэфт.

  • экспортэд модел сигнэйчэрс юзин зэ преддикт мэтуд вил наунт хэв зэр инпут энд аутпут кэйз силэнтли игнорд энд райтэн ту инпутс энд аутпутс. Иф э модел вус экспортд виз диферэнт нэймз бифор 1.2, энд из нау сэвед виз тэносфорлоу, ит вил акцепт рэкуэстс юзин инпутс энд аутпутс. Стэртинг ат 1.2, сукэн модел вил аксепт зэ кэйз сэптифэд дуринг экспорт. Фор зис рэзон, инфирэнс рэкуэстс юзин инпутс энд аутпутс май старт ту фэйл. Ту фик зис, ифэр апдэйт эни инфирэнс клэнэнтс ту сэнд рэкуэстс визин зэ актюэл инпут энд аутпут кэйзс юзд бай зэ трэйнэр код, ор конверсэли, апдэйт зэ трэйнэр код ту нэйм зэ инпут энд аутпут тэнарз инпутс энд аутпутс, рэспиктивли. Сигнэйчэрс юзинг зэ классфай энд рэгрэсс мэтус ар нот эфэктэд бай зис чэнж; зэй вил кантинъю ту стандардайз зэр инпут энд аутпут кэйзэс эс бифор. tensorflow/examples/ios

  • Добавляет атрибут family в tf.summary ops, чтобы можно было контролировать имя вкладки, используемой в Tensorboard для организации сводных данных.

  • При настройке GPU не требует --config=cuda, вместо этого автоматически собирает для GPU, если это запрошено в скрипте настройки.

  • Исправляет некорректную выборку малых вероятностей в CPU/GPU multinomial.

  • Добавляет API list_devices() на сессиях для перечисления устройств в кластере. Кроме того, это изменение расширяет мастер-API ListDevices для поддержки указания сессии.

  • Позволяет использовать сверхпараметризованные разделимые свёртки.

  • Исправление ошибки TensorForest для мультирегрессии.

  • Теперь фреймворк поддерживает armv7, cocoapods.org теперь отображает правильную страницу.

  • Скрипт для создания iOS-фреймворка для CocoaPods.

  • Выпуски Android от TensorFlow теперь отправляются в jcenter для более лёгкой интеграции в приложения. Подробнее см. в https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/android/README.md.

  • TensorFlow Debugger (tfdbg):

    • Исправлена ошибка, из-за которой tfdbg не работал с многопроцессорными установками.
    • Исправлена ошибка, которая мешала работе tfdbg с tf.Session.make_callable.

Спасибо нашим участникам

Этот выпуск содержит вклад многих людей из Google, а также:

4F2E4A2E, Adriano Carmezim, Adrià Arrufat, Alan Yee, Alex Lattas, Alex Rothberg, Alexandr Baranezky, Ali Siddiqui, Andreas Solleder, Andrei Costinescu, Andrew Hundt, Androbin, Andy Kernahan, Anish Shah, Anthony Platanios, Arvinds-Ds, b1rd, Baptiste Arnaud, Ben Mabey, Benedikt Linse, Beomsu Kim, Bo Wang, Boyuan Deng, Brett Koonce, Bruno Rosa, Carl Thomé, Changming Sun, Chase Roberts, Chirag Bhatia, Chris Antaki, Chris Hoyean Song, Chris Tava, Christos Nikolaou, Croath Liu, cxx, Czxck001, Daniel Ylitalo, Danny Goodman, Darren Garvey, David Brailovsky, David Norman, DavidNorman, davidpham87, ddurham2, Dhruv, DimanNe, Drew Hintz, Dustin Tran, Earthson Lu, ethiraj, Fabian Winnen, Fei Sun, Freedom" Koan-Sin Tan, Fritz Obermeyer, Gao, Xiang, Gautam, Guenther Schmuelling, Gyu-Ho Lee, Hauke Brammer, horance, Humanity123, J Alammar, Jayeol Chun, Jeroen BéDorf, Jianfei Wang, jiefangxuanyan, Jing Jun Yin, Joan Puigcerver, Joel Hestness, Johannes Mayer, John Lawson, Johnson145, Jon Malmaud, Jonathan Alvarez-Gutierrez, Juang, Yi-Lin, Julian Viereck, Kaarthik Sivashanmugam, Karl Lessard, karl@kubx.ca, Kevin Carbone, Kevin Van Der Burgt, Kongsea, ksellesk, lanhin, Lef Ioannidis, Liangliang He, Louis Tiao, Luke Iwanski, LáSzló Csomor, magixsno, Mahmoud Abuzaina, Marcel Hlopko, Mark Neumann, Maxwell Paul Brickner, mdfaijul, MichaëL Defferrard, Michał JastrzęBski, Michele Colombo, Mike Brodie, Mosnoi Ion, mouradmourafiq, myPrecious, Nayana Thorat, Neeraj Kashyap, Nelson Liu, Niranjan Hasabnis, Olivier Moindrot, orome, Pankaj Gupta, Paul Van Eck, peeyush18, Peng Yu, Pierre, preciousdp11, qjivy, Raingo, raoqiyu, ribx, Richard S. Imaoka, Rishabh Patel, Robert Walecki, Rockford Wei, Ryan Kung, Sahil Dua, Sandip Giri, Sayed Hadi Hashemi, sgt101, Shitian Ni, Shuolongbj, Siim PõDer, Simon Perkins, sj6077, SOLARIS, Spotlight0xff, Steffen Eberbach, Stephen Fox, superryanguo, Sven Mayer, Tapan Prakash, Tiago Morais Morgado, Till Hoffmann, Tj Rana, Vadim Markovtsev, vhasanov, Wei Wu, windead, Yan (Asta) Li, Yan Chen, Yann Henon, Yi Wang, Yong Tang, yorkie, Yuan (Terry) Tang, Yuxin Wu, zhengjiajin, zhongzyd, 黄璞

Мы также благодарны всем, кто подавал вопросы или помогал их решать, задавал и отвечал на вопросы, участвовал в вдохновляющих дискуссиях.

Выпуск 1.2.1

Исправления ошибок и другие изменения

  • Обновление версии markdown до >= 2.6.8.
  • Поддержка тензоров в качестве коэффициентов выпадения путём удаления min(max(...)).

Выпуск 1.2.0

Основные функции и улучшения

  • Поддержка Python 3.6 на Windows.

  • Добавлен слой tf.layers.conv3d_transpose для пространственно-временной деконволюции.

  • Добавлена функция tf.Session.make_callable(), которая обеспечивает более низкие накладные расходы при выполнении аналогичного шага несколько раз.

  • Добавлена поддержка RDMA на основе libverbs в contrib (благодаря @junshi15 из Yahoo).

  • В API добавлены tf.feature_column.*. Нерекомендуемая функциональность из tf.contrib.layers. перенесена в tf.feature_column. с косметическими изменениями.**

  • Объекты RNNCell теперь являются подклассом tf.layers.Layer. Строгость, описанная в выпуске TensorFlow 1.1, исчезла: при первом использовании RNNCell он кэширует свою область видимости. Все последующие использования RNNCell будут повторно использовать переменные из той же области видимости. Это критическое изменение по сравнению с поведением RNNCells в версиях TensorFlow <= 1.0.1. В TensorFlow 1.1 были предусмотрены проверки для обеспечения корректной работы старого кода с новой семантикой; эта версия позволяет более гибко использовать RNNCell, но может привести к тонким ошибкам при использовании кода, предназначенного для TensorFlow <= 1.0.1. Например, запись MultiRNNCell([lstm] * 5) теперь создаст 5-уровневый стек LSTM, где каждый уровень будет иметь одинаковые параметры. Чтобы получить 5 уровней с собственными параметрами, напишите: MultiRNNCell([LSTMCell(...) for _ in range(5)]). Если вы не уверены, сначала протестируйте свой код на TF 1.1; убедитесь, что он не вызывает ошибок, а затем обновитесь до TF 1.2.

  • Имена переменных RNNCells были переименованы для соответствия слоям Keras. В частности, предыдущие имена переменных «weights» и «biases» были изменены на «kernel» и «bias» соответственно. Это может вызвать обратную несовместимость с вашими старыми контрольными точками, содержащими такие RNN-ячейки, и в этом случае вы можете использовать инструмент скрипт checkpoint_convert, чтобы преобразовать имена переменных в ваших старых контрольных точках.

  • Многие функции и классы RNN, которые были в пространстве имён tf.nn до выпуска 1.0 и были перемещены в пространство имён tf.contrib.rnn, теперь вернулись в основное пространство имён. Сюда входят RNNCell, LSTMCell, GRUCell и ряд других ячеек. Теперь они находятся в tf.nn.rnn_cell (с псевдонимами в tf.contrib.rnn для обратной совместимости). Исходная функция tf.nn.rnn теперь называется tf.nn.static_rnn, а двунаправленные статические и сохраняющие состояние статические rnn-функции также вернулись в пространство имён tf.nn.

Известными исключениями являются EmbeddingWrapper, InputProjectionWrapper и OutputProjectionWrapper, которые постепенно будут перемещены в устаревание в tf.contrib.rnn. Эти оболочки неэффективны и часто должны заменяться вызовом embedding_lookup или layers.dense в качестве предварительной или последующей обработки rnn. Для декодирования RNN эта функциональность была заменена альтернативным API в tf.contrib.seq2seq.

  • Интеграция Intel MKL (https://software.intel.com/en-us/articles/tensorflow-optimizations-on-modern-intel-architecture). Intel разработала ряд оптимизированных примитивов глубокого обучения: помимо матричного умножения и свёртки, эти строительные блоки включают:

    • Прямую пакетную свёртку
    • Пулинг: максимальный, минимальный, средний
    • Нормализацию: LRN, пакетная нормализация
    • Активацию: выпрямленная линейная единица (ReLU)
    • Манипуляции с данными: многомерная транспозиция (преобразование), разделение, объединение, сумма и масштаб.
  • Оценщик TensorForest теперь поддерживает экспорт SavedModel для обслуживания.

  • Поддержка клиентских ClusterSpec и их распространение на всех рабочих для создания динамических кластеров TensorFlow.

  • Библиотека TensorFlow C теперь доступна для Windows.

  • Мы выпустили новую версию TensorBoard с открытым исходным кодом.

  • Инструмент SavedModel CLI доступен для проверки и выполнения MetaGraph в SavedModel.

  • Android-версии TensorFlow теперь отправляются в jcenter для упрощения интеграции в приложения. Подробнее см. в https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/android/README.md.

Устаревания

  • TensorFlow 1.2 может быть последним выпуском, который мы создадим с cuDNN 5.1. Начиная с TensorFlow 1.3, мы будем пытаться собрать все наши готовые двоичные файлы с помощью cuDNN 6.0. Хотя мы постараемся сохранить совместимость нашего исходного кода с cuDNN 5.1, это будет наилучшее усилие. Изменения в API contrib
  • Добавлен tf.contrib.util.create_example.
  • В tf.contrib.image добавлена билинейная интерполяция.
  • Для случайных операций с настраиваемым контролем начального значения добавлен tf.contrib.stateless.
  • В contrib/distributions/ добавлен MultivariateNormalFullCovariance.
  • tensorflow/contrib/rnn проходит через переименование переменных RNN-ячеек для соответствия слоям Keras. В частности, предыдущие имена переменных «weights» и «biases» изменены на «kernel» и «bias» соответственно. Это может вызвать обратную несовместимость в отношении ваших старых контрольных точек, содержащих такие RNN-ячейки. В этом случае вы можете использовать скрипт checkpoint_convert, чтобы преобразовать имена переменных в ваших старых контрольных точках.
  • Добавлен модуль tf.contrib.kernel_methods с операциями и оценщиками для основных (явных) ядерных методов в TensorFlow.

Исправления ошибок и другие изменения

  • В Python Operation.get_attr для атрибутов типа возвращает версию Python DType типа, чтобы соответствовать ожидаемой документации get_attr, а не перечислению protobuf.
  • Переименованы переменные RNN-ячеек tensorflow/contrib/rnn для соответствия слоям Keras. Предыдущие имена переменных «weights» и «biases» были изменены на «kernel» и «bias».
  • При сборке библиотек iOS изменена версия MIN_SDK на 8.0.
  • Исправлена интеграция LIBXSMM.
  • Функции decode_jpeg/decode_png/decode_gif теперь обрабатывают все форматы, поскольку пользователи часто пытаются декодировать изображение как неправильный тип.
  • Улучшено неявное понижение широковещательной передачи.
  • Повышена стабильность клиентов GCS/BigQuery за счёт более быстрого повторения устаревших передач.
  • Удалена OpKernelConstruction::op_def() в рамках минимизации зависимостей от прототипа.
  • Добавлено распределение VectorLaplaceDiag.
  • Android-демонстрация больше не требует libtensorflow_demo.so для запуска (libtensorflow_inference.so по-прежнему требуется).
  • Добавлена categorical_column_with_vocabulary_file.
  • Представлены операции для пакетирования/распакетирования тензоров между вызовами Session::Run().
  • Добавлена функция tf.log_sigmoid(x) = tf.log(tf.sigmoid(x)) = -tf.nn.softplus(-x).
  • Списки хуков заменены на неизменяемые кортежи, и теперь разрешены любые итерируемые объекты для связанных аргументов.
  • Представлен TFDecorator.
  • Добавлен Mfcc для генерации речевых признаков.
  • Улучшен DirectSession::Run() и проверка ошибок. Подача значения неправильного типа теперь синхронно вызывает ошибку INVALID_ARGUMENT вместо асинхронного вызова ошибки INTERNAL. Код, который зависит от (неопределённого) поведения при подаче тензора неправильного типа, возможно, потребуется обновить.
  • Добавлены параметры потерь NONE без уменьшения и MEAN со средним уменьшением. Убрана приставка «WEIGHTED_» из других констант Reduction.
  • assertAllClose теперь обрабатывает dicts.
  • Добавлен Gmock-сопоставитель для HloInstructions.
  • Ошибки восстановления переменных теперь содержат имя переменной.
  • Добавлен AudioSpectrogram для создания аудиопризнаков.
  • Добавлен аргумент reduction к потерям.
  • tf.placeholder может представлять скалярные формы и частично известные.
  • Удалён аргумент estimator_spec(mode).
  • Добавлен AudioSpectrogram для создания аудиопризнаков.
  • TensorBoard по умолчанию отключает все запуски, если их больше 40.
  • Удалён старый код генератора документов.
  • Интеграция файловой системы GCS теперь поддерживает доменные корзины, например gs://bucket.domain.com/path.
  • Добавлена tf.summary.text для вывода текста в TensorBoard.
  • Команда «run» интерфейса командной строки tfdbg теперь поддерживает фильтрацию тензоров по имени узла, типу op и типу данных тензора.
  • Функция tf.string_to_number теперь поддерживает выходные данные int64 и float64.

Благодарности нашим участникам

Этот выпуск содержит вклад многих людей из Google, а также:

4F2E4A2E, Aaron Schumacher, Abhi Agg, admcrae, Adriano Carmezim, Adrià Arrufat, agramesh1, Akimitsu Seo, Alan Mosca, Alex Egg, Alex Rothberg, Alexander Heinecke, Alexander Matyasko, Alexandr Baranezky, Alexandre Caulier, Ali Siddiqui, Anand Venkat, Andrew Hundt и др. Мы также благодарны всем, кто сообщал о проблемах или помогал их решать, задавал и отвечал на вопросы, а также участвовал в вдохновляющих дискуссиях.

Версия 1.1.0

Основные функции и улучшения

  • Добавлена поддержка Java API для Windows.
  • Добавлен модуль tf.spectral. Существующие операции FFT перемещены в tf.spectral, при этом сохранён псевдоним в старом местоположении (tf.*).
  • В tf.spectral добавлены 1D, 2D и 3D преобразования Фурье для реальных сигналов.
  • Добавлена функция tf.bincount.
  • Добавлен Keras 2 API к contrib.
  • Добавлен новый облегчённый объект типа очереди — RecordInput.
  • Добавлена функция tf.contrib.image.compose_transforms.
  • Функции tf.estimator.* включены в API. Не устаревшая функциональность из tf.contrib.learn.Estimator перенесена в tf.estimator.Estimator с косметическими изменениями.
  • Образы Docker: образы TF на gcr.io и Docker Hub обновлены до ubuntu:16.04.
  • В TensorFlow Debugger (tfdbg) добавлены следующие функции:
    • Возможность проверки исходного файла Python на соответствие операциям и тензорам TF (команда print_source / ps)
    • Новая панель навигации в пользовательском интерфейсе на основе Curses
    • NodeStepper (команда invoke_stepper) теперь использует дампы промежуточных тензоров. Он также использует TensorHandles в качестве прямых каналов во время последовательных вызовов cont для повышения производительности и снижения потребления памяти.
  • Выпущены первые руководства по установке для Java, C и Go.
  • В TensorBoard добавлен текстовый дашборд.

Устаревания

  • TensorFlow 1.1.0 будет последним выпуском двоичного файла с поддержкой GPU на Mac. В дальнейшем мы прекратим тестирование на системах с графическим процессором Mac. Мы продолжаем принимать исправления, которые поддерживают поддержку Mac GPU, и постараемся сохранить работоспособность сборки Mac GPU.

Изменения в API contrib

  • Поведение RNNCells теперь более строгое из-за перехода к тому, чтобы RNNCells больше походили на слои Keras.
    • Если RNNCell используется дважды в двух разных областях переменных, возникает ошибка с описанием того, как избежать такого поведения.
    • Если RNNCell используется в области переменных с существующими конфликтующими переменными, возникает ошибка, указывающая на то, что RNNCell должен быть сконструирован с аргументом reuse=True.
  • Устаревшие contrib/distributions Гао, Сян, @Gautam, Гэфу Тан, @guilherme, @guschmue, Ханна Провенза, Ганс Пабст, @hartb, Сяо И, Хуацзо Гао, Игорь Хоронжевич, Иван Смирнов, Якуб Колодзейчик, Джейсон Гаврис, Джейсон Мортон, Джей Янг, Джаярам Бобба, Джереми Саврук, Цзямин Лю, Джихун Чой, @jiqiu, Джоан Тибо, Джон Си Ф, Джоджи Джордж Варгезе, Джон Малмауд, Джулиан Берман, Юлиан Нидермайер, Джунпенг Лао, Кай Сасаки, @Kankroc, Карл Лессард, Кайл Бостельманн, @Lezcano, Ли И, Луо Юн, @lurker, Махмуд-Абузайна, Мандип Сингх, Марек Колодзей, Марк Шепинец, Марциал Хью, Медхат Омр, Мемо Актен, Майкл Гарби, Мишель Дефферрар, Милан Страка, @MircoT, @mlucool, Муаммар Ибн Фейсал, Наяна Торат, @nghiattran, Николас Коннор, Николаас Стеенберген, Нирадж Патель, Ниранджан Хасабнис, @Panmari, Павел Буланов, Филипп Прис Хеннингсен, Филипп Юнд, @polonez, Праяг Верма, Рахул Кави, Рафаэль Гонтижо Лопес, @rasbt, Рэйвен Икке, Рид Призент, Ричард Шин, Ризван Асиф, Рассел Каплан, Рио Асакура, Рюдигер Буше, Сайсай Шао, Сэм Абрахамс, @sanosay, Шон Папей, @seaotterman, @selay01, Шаурья Шарма, Шрирам Нараянаморти, Стефано Пробст, @taknevski, @tbonza, @teldridge11, Тим Англад, Томас Реймерс, Томер Гафнер, Валентин Иовен, Вамси Шрипати, Виктор Малый, Вит Степановс, Вивек Ран, Влад Фирою, @wangg12, @will, Сяоюй Тао, Ярослав Булатов, Ии Лю, Юань (Терри) Тан, @Yufeng, Юмин Ван, Юйсинь Ву, Зафар Тахиров, Зиминг Донг.

Мы также благодарны всем, кто сообщал о проблемах или помогал их решать, задавал и отвечал на вопросы, а также участвовал в вдохновляющих дискуссиях.

Версия 1.0.1

Исправления ошибок и другие изменения

  • Измените GraphConstructor, чтобы он не увеличивал версию при импорте, а вместо этого брал минимум всех версий.
  • Исправлены ошибки Google Cloud Storage.
  • Удалены модули tf.core и tf.python из API. Они никогда не предназначались для раскрытия. Пожалуйста, используйте те же объекты через верхний уровень модуля tf вместо них.

Версия 1.0.0

Основные функции и улучшения

  • XLA (экспериментальная): начальный выпуск XLA, специализированного компилятора для графов TensorFlow, который предназначен для работы с процессорами и графическими процессорами.
  • TensorFlow Debugger (tfdbg): интерфейс командной строки и API.
  • Добавлены новые образы Docker для Python 3.
  • Сделаны пакеты pip совместимыми с pypi. Теперь TensorFlow можно установить с помощью команды pip install tensorflow.
  • Некоторые вызовы API Python были изменены, чтобы больше походить на NumPy.
  • Android: демонстрация обнаружения и отслеживания людей, реализующая масштабируемое обнаружение объектов с использованием глубоких нейронных сетей.
  • Новый (экспериментальный) Java API.
  • Добавьте новую демонстрацию стилизации изображений для Android, основанную на статье «A Learned Representation For Artistic Style», и добавьте поддержку детектора объектов YOLO.

Критические изменения в API

Чтобы помочь вам обновить существующий код TensorFlow Python в соответствии с изменениями API, мы подготовили скрипт преобразования.

  • TensorFlow/models были перемещены в отдельный репозиторий GitHub.

  • Операторы деления и модуля (/, //, %) теперь соответствуют семантике Python (усечение). Это относится к tf.div и tf.mod также. Чтобы получить поведение усечения целых чисел, вы можете использовать tf.truncatediv и tf.truncatemod.

  • tf.divide() теперь является рекомендуемой функцией деления. tf.div() останется, но его семантика не реагирует на Python 3 или механизмы from future.

  • tf.reverse() теперь принимает индексы осей, которые нужно обратить. Например, tf.reverse(a, [True, False, True]) теперь должен быть записан как tf.reverse(a, [0, 2]). tf.reverse_v2() останется до версии 1.0 final.

  • tf.mul, tf.sub и tf.neg устарели в пользу tf.multiply, tf.subtract и tf.negative.

  • tf.pack и tf.unpack устарели в пользу tf.stack и tf.unstack.

  • TensorArray.pack и TensorArray.unpack устаревают в пользу TensorArray.stack и TensorArray.unstack.

  • Аргументы следующих функций Python были изменены: Используйте axis при обращении к конкретным измерениям. Мы сохранили старые ключевые аргументы для совместимости на данный момент, но уберём их задолго до финальной версии 1.0.

  • tf.argmax: dimension становится axis.

  • tf.argmin: dimension становится axis.

  • 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_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.listdiff был переименован в tf.setdiff1d для соответствия с NumPy.

  • tf.inv был переименован в tf.reciprocal (компонентное обратное значение), чтобы избежать путаницы с np.inv, который является матричной инверсией.

  • Теперь tf.round использует семантику округления банкира (округление до чётного) для соответствия NumPy.

  • tf.split теперь принимает аргументы в обратном порядке и с разными ключевыми словами. В частности, теперь мы следуем порядку NumPy как tf.split(value, num_or_size_splits, axis).

  • tf.sparse_split теперь принимает аргументы в обратном порядке и с другими ключевыми словами. В частности, мы теперь следуем порядку NumPy, как tf.sparse_split(sp_input, num_split, axis). Обратите внимание: мы временно сделали tf.sparse_split требующим ключевых аргументов.

  • tf.concat теперь принимает аргументы в обратном порядке и с различными ключевыми словами. В частности, мы теперь следуем порядку NumPy как tf.concat(values, axis, name).

  • По умолчанию tf.image.decode_jpeg использует более быстрый метод DCT, жертвуя небольшой точностью ради улучшенной скорости. Можно вернуться к старому поведению, указав атрибут dct_method='INTEGER_ACCURATE'.

  • Из интерфейса Python был удалён tf.complex_abs. Вместо него следует использовать tf.abs, поддерживающий комплексные тензоры.

  • В C++ API (в tensorflow/cc) Input, Output и т. д. переместились из пространства имён tensorflow::ops в tensorflow.

  • Свойство Template.var_scope было переименовано в .variable_scope.

  • SyncReplicasOptimizer был удалён, а SyncReplicasOptimizerV2 переименован в SyncReplicasOptimizer.

  • tf.zeros_initializer() и tf.ones_initializer() теперь возвращают вызываемый объект, который необходимо вызывать с аргументами инициализатора. В вашем коде замените tf.zeros_initializer на tf.zeros_initializer().

  • SparseTensor.shape был переименован в SparseTensor.dense_shape. То же самое касается SparseTensorValue.shape.

  • Замените tf.scalar_summary, tf.histogram_summary, tf.audio_summary и tf.image_summary на tf.summary.scalar, tf.summary.histogram, tf.summary.audio и tf.summary.image соответственно. Новые сводные операции принимают имя вместо тега в качестве первого аргумента, что означает, что сводные операции теперь учитывают области имён TensorFlow.

  • Замените tf.train.SummaryWriter и tf.train.SummaryWriterCache на tf.summary.FileWriter и tf.summary.FileWriterCache.

  • Удаляет RegisterShape из общедоступного API. Вместо этого используйте регистрацию функции формы C++.

  • Устарели _ref типы данных из API Python.

  • В C++ API (в tensorflow/cc), Input, Output и т.д. переместились из пространства имён tensorflow::ops в tensorflow.

  • Измените порядок аргументов для {softmax,sparse_softmax,sigmoid}_cross_entropy_with_logits, чтобы он был (метки, прогнозы), и принудительно используйте именованные аргументы.

  • tf.nn.rnn_cell.* и большинство функций в tf.nn.rnn.* (за исключением dynamic_rnn и raw_rnn) временно находятся в tf.contrib.rnn. Они будут перемещены обратно в ядро для TF 1.2.

  • И tf.nn.sampled_softmax_loss, и tf.nn.nce_loss имеют оба... Изменён API таким образом, что необходимо поменять местами параметры inputs и labels на labels и inputs.

  • Ключевой аргумент shape в конструкторе SparseTensor между Tensorflow 0.12 и Tensorflow 1.0 меняет своё название на dense_shape.

Исправления ошибок и другие изменения

  • Многочисленные обновления C++ API.
  • Новый OP: parallel_stack.
  • Введение общих опций tf io сжатия для констант RecordReader/RecordWriter.
  • Добавление sparse_column_with_vocabulary_file, чтобы указать столбец признаков, который преобразует строковые признаки в идентификаторы, где сопоставление определяется словарём файлов.
  • Добавлен index_to_string_table, который возвращает таблицу поиска, которая сопоставляет индексы со строками.
  • Добавлена функция ParallelForWithWorkerId.
  • Поддержка восстановления сеанса из контрольных точек в файлах v2 в contrib/session_bundle.
  • Добавлена функция tf.contrib.image.rotate для произвольных углов.
  • Добавлены функции tf.contrib.framework.filter_variables для удобства фильтрации списков переменных на основе регулярных выражений.
  • Функция make_template() принимает необязательный параметр custom_getter_.
  • Добавлено замечание о том, как существующие каталоги обрабатываются функцией recursive_create_dir.
  • Добавлен OP для QR-факторизации.
  • Деление и модуль в Python API теперь используют семантику округления (Python).
  • Android: предварительно собранные библиотеки теперь собираются ежедневно.
  • Android: сборка cmake/gradle для библиотеки TensorFlow Inference в contrib/android/cmake.
  • Android: гораздо более надёжный код инициализации сеанса.
  • Android: статистика TF теперь отображается непосредственно в демоверсии и журнале при активном режиме отладки.
  • Android: новая/улучшенная документация README.md.
  • Saved_model доступна как tf.saved_model.
  • Пустой OP теперь имеет состояние.
  • Улучшена скорость scatter_update на процессоре для операций ASSIGN.
  • Изменение reduce_join для обработки reduction_indices аналогично другим операциям reduce_.
  • Перемещение TensorForestEstimator в contrib/tensor_forest.
  • Включение оптимизаций компилятора по умолчанию и разрешение конфигурации в configure.
  • tf.divide теперь учитывает поле имени.
  • Более строгое распространение весов метрик.
  • Добавление новой очереди StagingArea и новых OP: stage и unstage.
  • Разрешение операций обновления строк на месте на CPU. Ускорение конкатенации строк.

Спасибо нашим участникам

Этот выпуск содержит вклад многих людей из Google, а также:

Аарон Ху, Абхишек Аггарвал, Адам Майкл, Адриано Кармезим, @AfirSraftGarrier, Александр Новиков, Александр Розенберг Йохансен, Андрей Гибианский, Эндрю Хундт, Аниш Шах, Антон Лосс, @b0noI, @BoyuanJiang, Карл Томе, Чед Кеннеди, Комик Чанг, Коннор Браа, Даниэль Н. Ланг, Даниэль Треббиен, @danielgordon10, Дарси Лю, Даррен Гарви, Дмитрий Лапин, Эрон Райт, Эван Кофер, Фабрицио Мило, Финбар Тимберс, Франк Дернонкур, Гаррет Смит, @guschmue, Хао Вэй, Хенрик Хольст, Хуацзо Гао, @Ian, @Issac, Джейкоб Израэль, Джангсу Парк, Джин Ким, Цзинтянь Пэн, Джон Поуп, Кай Бостельманн, Лянлян Хэ, Линг Чжан, Лухэн Хэ, Люк Ивански, @lvli, Михаил Базильян, Михир Патель, Михалай Драбович, Мортен Джаст, @newge, Ник Батлин, Нишант Шукла, Пэнфэй Ни, Пшемыслав Тредак, @rasbt, @Ronny, Рудольф Роза, @RustingSword, Сэм Абрахамс, Сэм Патнэм, @SeongAhJo, Ши Цзясинь, @skavulya, Стеффен Мюллер, @TheUSER123, @tiriplicamihai, @vhasanov, Виктор Костан, Вит Степановс, Ванда Тан, Вэньцзянь Хуан, Синдун Цзоу, Ярослав Булатов, Йота Тояма, Юань (Терри) Тан, Юйсинь Ву.

Мы также благодарны всем, кто подавал вопросы или помогал их решать, задавал и отвечал на вопросы, а также был частью вдохновляющих дискуссий. И HDFS файловые системы в настоящее время не поддерживаются. В настоящее время не реализованы следующие операции:

  • Dequantize,
  • QuantizeAndDequantize,
  • QuantizedAvgPool,
  • QuantizedBatchNomWithGlobalNormalization,
  • QuantizedBiasAdd,
  • QuantizedConcat,
  • QuantizedConv2D,
  • QuantizedMatmul,
  • QuantizedMaxPool,
  • QuantizeDownAndShrinkRange,
  • QuantizedRelu,
  • QuantizedRelu6,
  • QuantizedReshape,
  • QuantizeV2,
  • RequantizationRange,
  • Requantize.

Go: экспериментальный API на Go для создания и выполнения графов (https://godoc.org/github.com/tensorflow/tensorflow/tensorflow/go).

Новый формат контрольных точек становится стандартным в tf.train.Saver. Старые контрольные точки V1 остаются доступными для чтения; контролируется аргументом write_version, tf.train.Saver теперь по умолчанию записывает в новом формате V2. Это значительно снижает требуемую пиковую память и задержку при восстановлении.

Добавлена новая библиотека для библиотеки матричных (итерационных) решателей для линейных уравнений, линейных наименьших квадратов, собственных значений и сингулярных значений в tensorflow/contrib/solvers. Начальная версия имеет ланцошскую бидиагонализацию, сопряжённые градиенты и CGLS.

Добавлены градиенты для matrix_solve_ls и self_adjoint_eig.

Большая очистка для добавления второго порядка градиента для операций с градиентами C++ и улучшения существующих градиентов, так что большинство операций теперь можно дифференцировать несколько раз.

Добавлен решатель для обыкновенных дифференциальных уравнений, tf.contrib.integrate.odeint.

Новый модуль contrib для тензоров с именованными осями, tf.contrib.labeled_tensor.

Визуализация вложений в TensorBoard.

Критические изменения в API

  • BusAdjacency enum заменён протоколом буфера DeviceLocality. Индексирование PCI-шины теперь начинается с 1 вместо 0, а bus_id==0 используется там, где ранее использовался BUS_ANY.

  • Env::FileExists и FileSystem::FileExists теперь возвращают tensorflow::Status вместо bool. Любые вызывающие эту функцию могут быть преобразованы в bool путём добавления .ok() к вызову.

  • Тип C API TF_SessionWithGraph был переименован в TF_Session, что указывает на его предпочтительное использование в языковых привязках для TensorFlow. То, что раньше было TF_Session, было переименовано в TF_DeprecatedSession.

  • Переименовал TF_Port в TF_Output в C API.

  • Удаляет RegisterShape из общедоступного API. Вместо этого используйте регистрацию функции формы C++.

  • Большинство RNN-ячеек и RNN-функций теперь используют разные области переменных, чтобы соответствовать слоям (tf.contrib.layers). Это означает, что старые контрольные точки, записанные с использованием этого кода, не будут загружаться после этого изменения без предоставления Saver списка переименований переменных. Примеры изменений области видимости переменных включают RNN -> rnn в tf.nn.rnn, tf.nn.dynamic_rnn и перемещение из Linear/Matrix -> weights и Linear/Bias -> biases в большинстве ячеек RNN.

  • Устарело tf.select op. Следует использовать tf.where.

  • SparseTensor.shape был переименован в SparseTensor.dense_shape. То же самое для SparseTensorValue.shape. tf.all_variables, tf.VARIABLES и tf.initialize_all_variables переименованы в tf.global_variables, tf.GLOBAL_VARIABLES и tf.global_variables_initializer соответственно.

  • tf.zeros_initializer() и tf.ones_initializer() теперь возвращают вызываемый объект, который должен быть вызван с аргументами инициализатора. В вашем коде замените tf.zeros_initializer на tf.zeros_initializer().

Исправления ошибок и другие изменения

  • Используйте потокобезопасную версию функции lgamma.
  • Исправьте обработку tf.sqrt отрицательных аргументов.
  • Исправлена ошибка, приводящая к неправильному количеству потоков, используемых для многопоточных тестов.
  • Оптимизация производительности для batch_matmul на многоядерных процессорах.
  • Улучшите трассировку, matrix_set_diag, matrix_diag_part и их градиенты, чтобы они работали для прямоугольных матриц.
  • Поддержка SVD комплексных матриц.

Спасибо нашим участникам

Этот выпуск содержит вклад многих людей из Google, а также:

@a7744hsc, Abhi Agg, @admcrae, Adriano Carmezim, Aki Sukegawa, Alex Kendall, Alexander Rosenberg Johansen, @amcrae, Amlan Kar, Andre Simpelo, Andreas Eberle, Andrew Hundt, Arnaud Lenglet, @b0noI, Balachander Ramachandran, Ben Barsdell, Ben Guidarelli, Benjamin Mularczyk, Burness Duan, @c0g, Changming Sun, @chanis, Corey Wharton, Dan J, Daniel Trebbien, Darren Garvey, David Brailovsky, David Jones, Di Zeng, @DjangoPeng, Dr. Kashif Rasul, @drag0, Fabrizio (Misto) Milo, FabríCio Ceschin, @fp, @Ghedeon, @guschmue, Gökçen Eraslan, Haosdent Huang, Haroen Viaene, Harold Cooper, Henrik Holst, @hoangmit, Ivan Ukhov, Javier Dehesa, Jingtian Peng, Jithin Odattu, Joan Pastor, Johan Mathe, Johannes Mayer, Jongwook Choi, Justus Schwabedal, Kai Wolf, Kamil Hryniewicz, Kamran Amini, Karen Brems, Karl Lattimer, @kborer, Ken Shirriff, Kevin Rose, Larissa Laich, Laurent Mazare, Leonard Lee, Liang-Chi Hsieh, Liangliang He, Luke Iwanski, Marek Kolodziej, Moustafa Alzantot, @MrQianjinsi, @nagachika, Neil Han, Nick Meehan, Niels Ole Salscheider, Nikhil Mishra, @nschuc, Ondrej Skopek, OndřEj Filip, @OscarDPan, Pablo Moyano, Przemyslaw Tredak, @qitaishui, @Quarazy, @raix852, Philipp Helo, Sam Abrahams, @SriramRamesh, Till Hoffmann, Tushar Soni, @tvn, @tyfkda, Uwe Schmidt, Victor Villas, Vit Stepanovs, Vladislav Gubarev, @wujingyue, Xuesong Yang, Yi Liu, Yilei Yang, @youyou3, Yuan (Terry) Tang, Yuming Wang, Zafar Takhirov, @zhongyuk, Ziming Dong, @guotong1988

Мы также благодарны всем, кто подавал вопросы или помогал их решать, задавал и отвечал на вопросы, участвовал в вдохновляющих дискуссиях.

Выпуск 0.11.0

Основные функции и улучшения

  • Поддержка CUDA 8.
  • Поддержка cuDNN 5.
  • Поддержка HDFS.
  • Добавлена поддержка Fused LSTM через cuDNN 5 в tensorflow/contrib/cudnn_rnn.
  • Улучшена поддержка NumPy-стиля базового среза, включая неединичные шаги, эллипсы, newaxis и отрицательные индексы. Например, теперь поддерживаются сложные выражения типа foo[1, 2:4, tf.newaxis, ..., :-3:-1, :]. Кроме того, у нас есть предварительная (не транслирующая) поддержка срезанного присваивания переменным. В частности, можно написать var[1:3].assign([1,11,111]).
  • Устарели tf.op_scope и tf.variable_op_scope, вместо них используется унифицированный tf.name_scope и tf.variable_scope. Новый порядок аргументов tf.variable_scope несовместим с предыдущими версиями.
  • Представлен модуль core/util/tensor_bundle: модуль для эффективной сериализации/десериализации тензоров на диск. Будет использоваться в новом формате контрольных точек TF.
  • Добавлен tf.svd для вычисления сингулярного разложения (SVD) плотных матриц или пакетов матриц (только CPU).
  • Добавлены градиенты для собственных значений и собственных векторов, вычисленных с помощью self_adjoint_eig или self_adjoint_eivals.
  • Устранены методы batch_* для большинства операций линейной алгебры и БПФ, и продвинуты операции без пакета для обработки пакетов матриц.
  • Трассировка/временная шкала поддерживает распределённое выполнение (профайлер GPU пока отсутствует).
  • C API предоставляет доступ к выведенным формам с TF_GraphGetTensorNumDims и TF_GraphGetTensorShape.
  • Функции формы для основных операций были перенесены на C++ через shape_inference.cc. Родригез, Юань Танг, Юйсинь Ву, @zhongzyd, Цзымин Донг, Зохар Джексон.

Мы также благодарны всем, кто сообщал о проблемах или помогал их решать, задавал и отвечал на вопросы, а также участвовал в вдохновляющих дискуссиях.

Версия 0.8.0

Основные функции и улучшения

  • Добавлена распределённая среда выполнения с использованием GRPC.
  • Перемещение skflow в contrib/learn.
  • Улучшенный линейный оптимизатор в contrib/linear_optimizer.
  • Реализация случайного леса в contrib/tensor_forest.
  • Потери CTC и декодеры в contrib/ctc.
  • Базовая поддержка типа данных half.
  • Лучшая поддержка загрузки пользовательских операций (см. примеры в contrib/).
  • Разрешено использование (неблокирующего) пула потоков Eigen с определением TENSORFLOW_USE_EIGEN_THREADPOOL.
  • Добавление механизма расширения для добавления поддержки сетевой файловой системы.
  • TensorBoard отображает статистику метаданных (время работы, использование памяти и используемое устройство), а также формы тензоров.

Исправления ошибок и другие изменения

  • Утилита для проверки контрольных точек.
  • Базовое отслеживание и поддержка временной шкалы.
  • Разрешение сборки с cuDNN 5 (без поддержки RNN/LSTM).
  • Инструкции и двоичные файлы для библиотеки ProtoBuf с быстрой сериализацией и без ограничения в 64 МБ.
  • Специальные функции.
  • Строгость bool: тензоры должны явно сравниваться с None.
  • Строгость формы: все передаваемые значения должны иметь форму, совместимую с заменяемым ими тензором.
  • Экспонированный tf.while_loop (устаревший control_flow_ops.While).
  • run() теперь принимает RunOptions и RunMetadata, которые позволяют получать статистику времени.
  • Исправлено множество потенциальных проблем переполнения в ядрах операций.
  • Различные улучшения производительности, особенно для RNN и свёрток.
  • Множество исправлений ошибок.
  • Ночные сборки, тесты учебных пособий, множество улучшений тестов.
  • Новые примеры: трансферное обучение и глубокая мечта ipython notebook.
  • Учебные пособия, множество исправлений документации.

Спасибо нашим участникам

В этом выпуске есть вклад многих людей из Google, а также:

Абхинав Упадхьяй, Аджелоса Авгериноса, Алан Ву, Александр Г. де Г. Мэтьюз, Александр Яхнев, @amchercashin, Энди Китчен, Орельен Джерон, Авни Ханнун, @BanditCat, Бас Вилинг, Кэмерон Чен, @cg31, Ченг-Лун Сунг, Кристофер Боннетт, Дэн Беккер, Дэн Ван Боксэл, Дэниел Голден, Данияр Хафнер, Дэнни Гудман, Дэйв Декер, Дэвид Дао, Дэвид Кретч, Донджун Хён, Дастин Дорро, @e-lin, Эурико Доираду, Эрик Эрвитт, Фабрицио Мило, @gaohuazuo, Иблис Лин, Игорь Бабушкин, Айзек Ходс, Айзек Тёрнер, Иван Валлес, Джей Йегерленер, Джек Чжан, Джеймс Векслер, Ян Зикс, Джей Янг, Джефф Ходжес, @jmtatsch, Джонни Лим, Йонас Майнерц Хансен, Канит Вонгсупават, Кашиф Расул, Кен Ширрифф, Кеннет Митчер, Кента Ёнекура, Конрад Магнуссон, Константин Лопухин, @lahwran, @lekaha, @liyongsea, Лукас Адамс, @makseq, Мандип Сингх, @manipopopo, Марк Амери, Мемо Актен, Майкл Хейлман, Майкл Петиль, Натан Дейли, Николя Фошере, @ninotoshi, Олав Нимёэн, @panmari, @papelita1234, Педро Лопес, Пранав Салеш Мани, Р. Дж. Райан, Роб Каллитон, Роберт ДиПьетро, @ronrest, Сэм Абрахамс, Сарат Шеккизар, Скотт Грэм, Себастьян Рашка, Сун Ким, Сурья Бхупатираджу, Сайед Ахмед, Тилл Хоффманн, @timsl, @urimend, @vesnica, Влад Фролов, Влад Загородний, Вэй-Тинг Куо, Вэньцзянь Хуан, Уильям Дмирти Бреден Мэдден, Владимир Шмидт, Юань Тан, Юйвэнь Янь, Юйсинь У, Юя Кусакабэ, @zhongzyd, @znah.

Мы также благодарим всех, кто сообщал о проблемах или помогал их решать, задавал и отвечал на вопросы, а также участвовал в вдохновляющих дискуссиях.

Выпуск 0.7.1

Исправлены ошибки и внесены другие изменения

  • Добавили gfile.Open и gfile.Copy, используемые input_data.py.
  • Исправлена ошибка Saver при попытке MakeDirs создать пустой каталог.
  • Колёса GPU Pip созданы с cuda 7.5 и cudnn-v4, что делает их необходимыми для бинарных выпусков. Более низкие версии cuda/cudnn можно поддерживать, установив из источников и настроив параметры во время ./configure.
  • Исправлен пример кодирования набора данных для Python3 (@danijar).
  • Исправлена установка PIP путём отказа от упаковки protobuf как части колеса, требуется protobuf 3.0.0b2.
  • Исправлена Mac pip установка numpy путём требования pip >= 1.10.1.
  • Усовершенствования и исправления в образе Docker.

Выпуск 0.7.0

Основное Особенности и улучшения

  • Поддержка любых установленных Cuda >= 7.0 и cuDNN >= R2, а также добавлена поддержка cuDNN R4.
  • Добавлен каталог contrib/ для неподдерживаемых или экспериментальных функций, включая более высокоуровневый модуль layers.
  • Реализован простой способ добавления и динамической загрузки пользовательских операций.
  • Разработан хороший набор тестов, который должен уменьшить количество ошибок!
  • Добавлено MetaGraphDef, что упрощает сохранение графов с метаданными.
  • Задания для курса «Глубокое обучение с TensorFlow» Udacity.

Исправления ошибок и другие изменения

  • Реализована система управления версиями для GraphDefs для обеспечения совместимости.
  • Обеспечена совместимость с Python 3.
  • Внутренние изменения теперь отображаются в виде разумно разделённых коммитов.
  • Генератор документации открыт.
  • Eigen больше не форк.
  • Файлы BUILD упрощены, а заголовки C++ очищены.
  • TensorFlow теперь можно использовать как подмодуль в другом проекте Bazel.
  • Новые операции (например, *fft, *_matrix_solve).
  • Поддержка большего количества типов данных во многих операциях.
  • Улучшения производительности.
  • Различные исправления ошибок.
  • Исправления и улучшения документации.

Критические изменения API

  • Ядро AdjustContrast устарело, новое ядро AdjustContrastv2 принимает и выводит только float. adjust_contrast теперь принимает все типы данных.
  • Аргумент delta в adjust_brightness теперь всегда считается находящимся в диапазоне [0,1] (как это принято для изображений в форматах с плавающей запятой), независимо от типа данных входного изображения.
  • Операции обработки изображений больше не принимают min и max в качестве входных данных, безопасность приведения типов обеспечивается saturate_cast, который обеспечивает обработку переполнений и потерь значимости перед приведением к типам данных с меньшими диапазонами.
  • Для пользователей C++ API: IsLegacyScalar и IsLegacyVector больше не доступны в TensorShapeUtils, поскольку TensorFlow строго скалярный внутри Google (например, аргумент shape для tf.reshape больше не может быть скаляром). В открытом исходном выпуске уже была строгая скалярная версия, поэтому за пределами Google IsScalar и IsVector являются точными заменами.
  • Следующие файлы удаляются из tensorflow/core/public/:
    • env.h -> ../platform/env.h
    • status.h -> ../lib/core/status.h
    • tensor.h -> ../framework/tensor.h
    • tensor_shape.h -> ../framework/tensor_shape.h
    • partial_tensor_shape.h -> ../framework/partial_tensor_shape.h
    • tensorflow_server.h удалён.
  • Для пользователей C++ API: TensorShape::ShortDebugString был переименован в DebugString, и предыдущее поведение DebugString исчезло (оно было излишне подробным и создавало запутанную пустую строку для скаляров).
  • GraphOptions.skip_common_subexpression_elimination был удалён. Все параметры оптимизатора графа теперь указываются через GraphOptions.OptimizerOptions.
  • Макросы ASSERT_OK / EXPECT_OK конфликтовали с внешними проектами, поэтому они были переименованы в TF_ASSERT_OK, TF_EXPECT_OK. Существующие макросы в настоящее время поддерживаются для краткосрочной совместимости, но будут удалены.
  • Непубличный nn.rnn и различные методы nn.seq2seq теперь возвращают только конечное состояние вместо списка всех состояний.
  • tf.scatter_update теперь больше не гарантирует, что при наличии повторяющихся записей будет использоваться лексикографически наибольший индекс для обновления.
  • tf.image.random_crop(изображение, [высота, ширина]) теперь является tf.random_crop(изображение, [высота, ширина, глубина]), и tf.random_crop работает для любого ранга (не только для 3-D изображений). Операция C++ RandomCrop была заменена чистым Python.
  • Renamed tf.test.GetTempDir и tf.test.IsBuiltWithCuda to tf.test.get_temp_dir и tf.test.is_built_with_cuda для совместимости с PEP-8.
  • Интерфейс parse_example изменился, старый интерфейс доступен в legacy_parse_example (то же самое для связанных функций).
  • Новые переменные не добавляются в одну и ту же коллекцию несколько раз, даже если в конструктор передаётся список с дубликатами.
  • Python API теперь правильно устанавливает элемент list в AttrValue в построенных сообщениях GraphDef для пустых списков. Сериализация некоторых графов изменится, но изменение совместимо как вперёд, так и назад. TensorFlow 0.6.0

Основные функции и улучшения:

  • Поддержка Python 3.3+ благодаря изменениям в кодовой базе Python и возможности указать версию Python через ./configure.
  • Некоторые улучшения производительности GPU и использования памяти: бенчмарки свёрточной нейронной сети примерно эквивалентны нативной производительности cudnn v2. Улучшения в основном связаны с переходом на 32-битные индексы и более быстрыми ядрами перетасовки. В следующих выпусках ожидается ещё больше улучшений.

Исправления ошибок:

  • Множество исправлений документации и руководств, многие из которых были предложены общественностью.
  • Закрыто 271 проблема на GitHub.

Изменения, несовместимые с предыдущими версиями:

  • В tf.nn.fixed_unigram_candidate_sampler значение по умолчанию для атрибута «distortion» было изменено с 0,0 на 1,0. Это была ошибка в первоначальном выпуске, которая теперь исправлена.

TensorFlow 0.5.0 — первоначальный выпуск TensorFlow.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/microsoft-TensorFlow-DirectML.git
git@api.gitlife.ru:oschina-mirror/microsoft-TensorFlow-DirectML.git
oschina-mirror
microsoft-TensorFlow-DirectML
microsoft-TensorFlow-DirectML
directml