Как назвать выход слоя в TF 1.0? - PullRequest
0 голосов
/ 19 марта 2020

Я обучаю агента DQN, голова которого состоит из двух слоев F C, последний из которых является выходом сети.
Раньше я выполнял одну заключительную операцию после последнего F C layer, и используйте для вызова этого «Output». Это сработало, когда я перезагружал модель для вывода, поскольку операция «Вывод» соответствовала фактической последней операции в сети:

        fcl_2 = tf.layers.dense(
            inputs=fcl_1,
            units=self.action_shape,
            activation=None,
            kernel_initializer=tf.contrib.layers.xavier_initializer(),
        )

        output = tf.where(
            self.valid_actions < 1,
            tf.ones_like(fcl_2) * self.illegal_q,
            fcl_2,
            name="Output",
        )

        return output

Теперь я удалила последнюю операцию, tf.where, так что выход сети - последний слой F C. Хотя, если я называю это «Выход», при загрузке модели у меня есть несколько операций, называемых «Выход», а не только одна, которая является фактическим конечным результатом этого слоя. Например, у меня есть такие операции, как Output / kernel_initializer, Output / Add_bias и т. Д.
Есть ли способ получить тот же результат, что и в первой части, где «Output» - это имя финальной операции сети, содержащей результат? Это новый заголовок:

        fcl_2 = tf.layers.dense(
            inputs=fcl_1,
            units=self.action_shape,
            activation=None,
            kernel_initializer=tf.contrib.layers.xavier_initializer(),
            name="Output",
        )

        return output

Я пробовал что-то вроде output = tf.identity (output, name = "Ouput"), и это работает, но Я искал решение, в котором нет необходимости использовать накладные расходы.

...