【问题标题】:How is the Model Made in Tensorflow Using GraphTensorFlow 中如何使用 Graph 制作模型
【发布时间】:2020-08-15 11:33:45
【问题描述】:

我试图了解如何在 tensorflow 中制作以下模型。我更习惯于看到使用 Tensorflow.kera.Sequential() 制作的多层感知器。如果有人可以解释模型是如何创建的,或者如何找到有关其架构的更多信息——比如 model.summary()——我将非常感激。谢谢!

来源:https://github.com/github/CodeSearchNet/blob/master/src/models/model.py

类的完整定义可以在上面的链接中找到。

def make_model(self, is_train: bool):
        with self.__sess.graph.as_default():
            random.seed(self.hyperparameters['seed'])
            np.random.seed(self.hyperparameters['seed'])
            tf.set_random_seed(self.hyperparameters['seed'])

            self._make_model(is_train=is_train)
            self._make_loss()
            if is_train:
                self._make_training_step()
                self.__summary_writer = tf.summary.FileWriter(self.__tensorboard_dir, self.__sess.graph)
def _make_model(self, is_train: bool) -> None:
        """
        Create the actual model.
        Note: This has to create self.ops['code_representations'] and self.ops['query_representations'],
        tensors of the same shape and rank 2.
        """
        self.__placeholders['dropout_keep_rate'] = tf.placeholder(tf.float32,
                                                                  shape=(),
                                                                  name='dropout_keep_rate')
        self.__placeholders['sample_loss_weights'] = \
            tf.placeholder_with_default(input=np.ones(shape=[self.hyperparameters['batch_size']],
                                                      dtype=np.float32),
                                        shape=[self.hyperparameters['batch_size']],
                                        name='sample_loss_weights')

        with tf.variable_scope("code_encoder"):
            language_encoders = []
            for (language, language_metadata) in sorted(self.__per_code_language_metadata.items(), key=lambda kv: kv[0]):
                with tf.variable_scope(language):
                    self.__code_encoders[language] = self.__code_encoder_type(label="code",
                                                                              hyperparameters=self.hyperparameters,
                                                                              metadata=language_metadata)
                    language_encoders.append(self.__code_encoders[language].make_model(is_train=is_train))
            self.ops['code_representations'] = tf.concat(language_encoders, axis=0)
        with tf.variable_scope("query_encoder"):
            self.__query_encoder = self.__query_encoder_type(label="query",
                                                             hyperparameters=self.hyperparameters,
                                                             metadata=self.__query_metadata)
            self.ops['query_representations'] = self.__query_encoder.make_model(is_train=is_train)

        code_representation_size = next(iter(self.__code_encoders.values())).output_representation_size
        query_representation_size = self.__query_encoder.output_representation_size
        assert code_representation_size == query_representation_size, \
            f'Representations produced for code ({code_representation_size}) and query ({query_representation_size}) cannot differ!'

【问题讨论】:

    标签: python tensorflow machine-learning nlp artificial-intelligence


    【解决方案1】:

    如果你想得到模型架构,你可以简单地使用 tensorboard。正如您在这一行中看到的,

    self.__summary_writer = tf.summary.FileWriter(self.__tensorboard_dir, self.__sess.graph)
    

    它将会话图写入self.__tensorboard_dir 位置的文件中。您只需要启动张量板并通过给定的网址访问它。

    要启动 tensorboard,请打开终端并使用此命令。

    tensorboard --logdir="<file path (url of self.__tensorboard_dir)>"
    

    这将启动服务器并显示 tensorboard 的 URL。在 tensorboard 中,您有 Graph 选项卡,它将显示整个架构。

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 2021-10-30
      • 2021-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 2019-11-03
      相关资源
      最近更新 更多