tf.contrib.eager.Сеть
Представляет собой композицию набора слоев.
Наследуется от: Layer
tf.contrib.eager.Network(
name=None
)
Устаревший. Пожалуйста, наследуйте от tf.keras.Model и обратитесь к его документации для получения подробностей. tf.keras.Model должен быть прямым заменителем tfe.Network в большинстве случаев, но обратите внимание, что track_layer больше не нужен или не поддерживается. Вместо этого экземпляры Layer отслеживаются при присваивании атрибутов (см. раздел документации tf.keras.Model по наследованию). Поскольку результат track_layer часто присваивается атрибуту, большая часть кода может быть перенесена путем простого удаления вызовов track_layer.
tf.keras.Model работает со всеми экземплярами TensorFlow Layer, включая те, которые из tf.layers, но рекомендуется переключиться на версии tf.keras.layers вместе с миграцией на tf.keras.Model, так как это сохранит имена переменных. Не стесняйтесь импортировать его с псевдонимом, чтобы избежать излишней ввода :).
Network реализует интерфейс Layer и добавляет удобные методы для управления подслоями Layer, такие как перечисление переменных.
Слои (включая другие Networkы) должны быть добавлены с помощью track_layer. Их можно использовать при переопределении метода Network.call:
class TwoLayerNetwork(tfe.Network):
def __init__(self, name):
super(TwoLayerNetwork, self).__init__(name=name)
self.layer_one = self.track_layer(tf.compat.v1.layers.Dense(16,
input_shape=(8,)))
self.layer_two = self.track_layer(tf.compat.v1.layers.Dense(1,
input_shape=(16,)))
def call(self, inputs):
return self.layer_two(self.layer_one(inputs))
После создания объекта и вызова Network, список переменных, созданных отслеживаемыми Layerами, доступен через Network.variables:
net = TwoLayerNetwork(name="net") output = net(tf.ones([1, 8])) print([v.name for v in net.variables])
Этот пример выводит имена переменных, по одному ядру и одному смещению на слой tf.compat.v1.layers.Dense:
['net/dense/kernel:0', 'net/dense/bias:0', 'net/dense_1/kernel:0', 'net/dense_1/bias:0']
Эти переменные могут быть переданы в Saver (tf.compat.v1.train.Saver или tf.contrib.eager.Saver при выполнении в режиме Eager) для сохранения или восстановления Network, как правило, вместе с глобальным шагом и переменными tf.compat.v1.train.Optimizer при контрольных точках во время обучения.
Обратите внимание, что семантика вызова Network с выполнением графа (то есть не выполняя его жадно) может незначительно измениться в будущем. В настоящее время операторы с состоянием удаляются из графа, если они или что-то, что от них зависит, не выполняются в сессии, но это поведение не соответствует выполнению Eager (где операторы с состоянием выполняются жадно). Network из tf.layers не зависят от этого усечения и поэтому не будут затронуты, но Network которые полагаются на добавление операторов с состоянием в граф, но не на их выполнение (например, с помощью настраиваемых Layer которые управляют операторами с состоянием), могут сломаться из-за этого изменения.
| Args | |
|---|---|
name |
Имя, которое нужно использовать для этой Network. Если указано, оно должно быть уникальным в контексте, где эта Network в первый раз (1) добавляется к другой Network (в этом случае оно не должно совпадать с именами других Layers добавленных к этой Network), или (2) построено/вызвано (в этом случае другие 'глобальные' Networkы не должны иметь это имя). Если не указано или равно None, Network получит имя по своему классу, с добавлением номера, если это необходимо для уникальности (например, MyNetwork -> 'my_network_1'). |
| Raises | |
|---|---|
ValueError |
Если name недействителен. Обратите внимание, что некоторые ошибки именования вместо этого будут подняты при вызове Network. |
| Attributes | |
|---|---|
graph |
УСТАРЕВШАЯ ФУНКЦИЯ |
layers |
|
scope_name |
|
Методы
get_layer
get_layer(
name=None, index=None
)
Получить содержащийся tf.compat.v1.layers.Layer по имени или индексу.
| Args | |
|---|---|
name |
Строка, соответствующая одному из имен содержащегося Layer. Обратите внимание, что имена Layer добавленных к Network могут не быть уникальными при использовании совместного использования слоев (т. е. добавление Layer к этому Network, который уже был добавлен к другому Network). Наименьший индекс Layer с совпадающим именем будет возвращен. |
index |
Целое число в [0, количество слоев). Слоям присваивается индекс в порядке их добавления. |
| Returns | |
|---|---|
Объект tf.compat.v1.layers.Layer. |
| Raises | |
|---|---|
ValueError |
Если ни один, ни оба из 'index' или 'name' не указаны, или поиск не удался. |
track_layer
track_layer(
layer
)
Отследить слой в этой сети.
Network требует, чтобы все Layer используемые в call() были отслеживаемы, чтобы Network мог экспортировать полный список переменных.
| Args | |
|---|---|
layer |
Объект tf.compat.v1.layers.Layer. |
| Returns | |
|---|---|
Переданный layer. |
| Raises | |
|---|---|
RuntimeError |
Если init не был вызван. |
TypeError |
Если layer имеет неправильный тип. |
ValueError |
Если Layer с таким же именем уже был добавлен. |
© 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/eager/Network