Что такое tensorflow.compat.as_str()?
В учебнике Google/Udemy Tensorflow приведен следующий код:
import tensorflow as tf
...
def read_data(filename):
"""Extract the first file enclosed in a zip file as a list of words"""
with zipfile.ZipFile(filename) as f:
data = tf.compat.as_str(f.read(f.namelist()[0])).split()
return data
Это выполняется отлично, но я не могу найти compat.as_str
в документации Tensorflow или где-либо еще.
Q1: Что делает compat.as_str
?
Q2: Является ли это tensorflow compat
задокументирована где библиотека?
Q3: Это вызов библиотеки tensorflow, так как и почему она работает в нормальном коде python, а не внутри графика тензорного потока? Т.е. я думал, что вызовы библиотеки tensorflow должны быть внутри блока дефискации графа тензорного потока:
graph = tf.Graph()
with graph.as_default()
... tensorflow function calls here ...
Я запускаю python 2.7.
Ответы
Ответ 1
В основном это происходит из-за того, что в Python 2 строки обрабатывались прежде всего как байты, а не unicode.
В Python 3 все строки являются естественными unicode.
Цель этой функции заключается в обеспечении того, какой бы ни версию Python, который вы используете, вы не будете беспокоить, поэтому compat
имя модуля, стоя на совместимость.
Под капотом tensorflow.compat.as_str
преобразует оба bytes
и unicode
строку в unicode
строки.
Signature: tensorflow.compat.as_str(bytes_or_text, encoding='utf-8')
Docstring:
Returns the given argument as a unicode string.
Args:
bytes_or_text: A 'bytes', 'str, or 'unicode' object.
encoding: A string indicating the charset for decoding unicode.
Returns:
A 'unicode' (Python 2) or 'str' (Python 3) object.
Raises:
TypeError: If 'bytes_or_text' is not a binary or unicode string.
Библиотека документирована здесь.
Ответ 2
-
tf.compat.as_str
преобразует ввод в строку
-
Я не мог найти никакой документации, но вы можете посмотреть исходный код здесь
-
Tensorflow функционирует как модуль python. Контекст графа используется для определения графика (математических вычислений), который будет использоваться для обучения модели.
типичное использование включает в себя диспетчер контекстов Graph.as_default(), который переопределяет текущий график по умолчанию для срока действия контекса
Ответ 3
В текущей версии TF вся группа tf.compat
хорошо документирована.
В принципе, некоторые вещи ведут себя по-разному в python 2 и 3 (может быть немного неточно, гуру python могут помочь мне с этим). Python3 использует 64-битные поплавки и 32-битные поплавки python2, также существуют различия по отношению к строкам. Модуль-совместитель пытается вести себя так же (если вы проверите исходный код, вы увидите, что они делают разные вещи в зависимости от того, используете ли вы 2 или 3).
tf.compat.as_str
:
Преобразует либо байты, либо unicode в байты, используя кодировку utf-8 для текста.
Это может быть полезно, если вы сохраняете данные в tfrecords и хотите убедиться, что они будут сохранены одинаково, независимо от того, какая версия python используется.