tf.contrib.framework.load_and_remap_matrix_initializer
Возвращает инициализатор переменной для загрузки и переиндексации тензора 2-D (матрица).
tf.contrib.framework.load_and_remap_matrix_initializer(
ckpt_path, old_tensor_name, new_row_vocab_size, new_col_vocab_size,
old_row_vocab_size=-1, old_row_vocab_file=None, new_row_vocab_file=None,
old_col_vocab_file=None, new_col_vocab_file=None, num_row_oov_buckets=0,
num_col_oov_buckets=0, initializer=None, max_rows_in_memory=-1
)
Возвращаемый инициализатор загружает тензор 2-D (матрицу) Tensor с именем old_tensor_name из контрольной точки по адресу ckpt_path. Он будет переупорядочивать строки/столбцы в соответствии с указанными файлами словаря и добавлять дополнительные строки/столбцы вне словаря в соответствии с количеством ведер OOV.
Формат файла по адресу {old,new}_{row,col}_vocab_file должен быть текстовым файлом, где каждая строка содержит одно сущность из словаря. Пусть функция line_of(f, "x") возвращает нулево-индексированный номер строки сущности "x" в файле f, а функция entity_at(f, i) возвращает сущность в строке i файла f. Тогда строка i новой выходной матрицы будет взята из строки line_of(old_row_vocab_file, entity_at(new_row_vocab_file, i)) старой матрицы. Если какая-либо сущность в new_row_vocab_file не найдена в old_row_vocab_file, эта строка считается "отсутствующей" строкой, и её значения будут инициализированы с помощью аргумента initializer. Та же логика применяется и к столбцам.
Например, предположим, что:
-
old_row_vocab_fileсодержит "mercury\nvenus\nmars" -
new_row_vocab_fileсодержит "venus\njupiter\nmercury" -
old_col_vocab_fileсодержит "good\nbetter\nbest" -
new_col_vocab_fileсодержит "good\nbest\nfantastic" -
initializerвозвращает натуральные числа[1, 2, 3, 4, ...] -
w(i, j)представляет значение из строки i, столбца j старой матрицы
Тогда новая выходная матрица будет выглядеть так:
[[w(1, 0), w(1, 2), 1], [2, 3, 4], [w(0, 0), w(0, 2), 5]]
Если мы дополнительно укажем, что:
-
num_row_oov_buckets== 2 -
num_col_oov_buckets== 1
Тогда новая выходная матрица будет выглядеть так:
[[w(1, 0), w(1, 2), 1, 12], [2, 3, 4, 13], [w(0, 0), w(0, 2), 5, 14], [6, 7, 8, 15], [9, 10, 11, 16]]
Если {old,new}_row_vocab_file равны None, мы предполагаем, что файлы словаря строк старой и новой матрицы совпадают, и переиндексация строк не выполняется. Если {old,new}_col_vocab_file равны None, мы предполагаем, что файлы словаря столбцов старой и новой матрицы совпадают, и переиндексация столбцов не выполняется.
Возвращаемый инициализатор поддерживает только разбиение на части (div-partitioning) по оси строк. Он не поддерживает разбиение на части по оси столбцов (так как это не часто используется на практике) или разбиение на части по остатку (mod-partitioning).
Примечание: При использовании для начальной загрузки переменных код клиента должен использоватьtf.lookup.index_table_from_tensor()как в contrib/layers/python/layers/feature_column.py, а неtf.feature_to_id(), чтобы убедиться, что лежащие в основе таблицы поиска совпадают.
| Аргументы | |
|---|---|
ckpt_path | Путь к контрольной точке TensorFlow (версия 2, TensorBundle) из которой будет загружена старая матрица Tensor. |
old_tensor_name | Имя загружаемой 2-D Tensor из контрольной точки. |
new_row_vocab_size | Значение, определяющее количество элементов в new_row_vocab_file. Если переиндексация строк не требуется (файл словаря строк не предоставлен), это значение должно быть равно количеству строк, загружаемых из старой матрицы (теоретически может быть меньше, чем общее количество строк в старой матрице). |
new_col_vocab_size | Значение, определяющее количество элементов в new_col_vocab_file. Если переиндексация столбцов не требуется (файл словаря столбцов не предоставлен), это значение должно быть равно количеству столбцов в старой матрице. |
old_row_vocab_size | Количество элементов для рассмотрения в старом словаре. При значении по умолчанию -1 будет использоваться весь старый файл словаря строк. В противном случае для переиндексации будут рассмотрены только первые old_row_vocab_size элементов. Должно быть меньше длины old_row_vocab_file. ПРИМЕЧАНИЕ: эквивалентный old_col_vocab_size для классов не предоставляется. |
old_row_vocab_file | Скалярный Tensor типа string содержащий путь к файлу словаря старых строк. Может быть None, что означает отсутствие переиндексации по оси строк. |
new_row_vocab_file | Скалярный Tensor типа string содержащий путь к файлу словаря новых строк. Может быть None, что означает отсутствие переиндексации по оси строк. |
old_col_vocab_file | Скалярный Tensor типа string содержащий путь к файлу словаря старых столбцов. Может быть None, что означает отсутствие переиндексации по оси столбцов. |
new_col_vocab_file | Скалярный Tensor типа string содержащий путь к файлу словаря новых столбцов. Может быть None, что означает отсутствие переиндексации по оси столбцов. |
num_row_oov_buckets | Значение, определяющее количество строк вне словаря для добавления. Должно быть >= 0. |
num_col_oov_buckets | Значение, определяющее количество столбцов вне словаря для добавления. Должно быть >= 0. |
initializer | Функция инициализации для инициализации отсутствующих значений. Принимает 1-мерный тензор в качестве аргумента для указания формы возвращаемого тензора. Если None, по умолчанию используется zeros_initializer(). |
max_rows_in_memory | Значение, определяющее максимальное количество строк для загрузки из контрольной точки за один раз. Если меньше или равно 0, вся матрица будет загружена в память. Установка этого аргумента позволяет обменять увеличение дисковых чтений на меньшее использование памяти. |
| Возвращаемое значение | |
|---|---|
Функция инициализации переменной, которая должна быть использована для инициализации (возможно, разбиеной на части) Variable с полной формой [new_row_vocab_size + num_row_oov_buckets, new_col_vocab_size + num_col_oov_buckets]. |
| Исключения | |
|---|---|
TypeError | Если initializer указано, но не является вызываемой функцией. |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/framework/load_and_remap_matrix_initializer