def __init__()

in gym_wikinav/envs/wikinav_env/web_graph.py [0:0]


    def __init__(self, data_path, path_length, emb_paths=None):
        try:
            import cPickle as pickle
        except: import pickle

        with open(data_path, "rb") as data_f:
            data = pickle.load(data_f)
        self._data = data

        if emb_paths is not None:
            embeddings = [np.load(emb_path)["arr_0"] for emb_path in emb_paths]
            self.embedding_dim = embeddings[0].shape[1]
            for other_embeddings in embeddings:
                assert other_embeddings.shape == embeddings[0].shape
            self.embeddings = embeddings
        else:
            print("=====================================================\n"
                  "WARNING: Using randomly generated article embeddings.\n"
                  "=====================================================",
                  file=sys.stderr)
            # Random embeddings.
            self.embedding_dim = 128 # fixed for now
            shape = (len(data["articles"]), self.embedding_dim)
            # Match Wikispeedia embedding distribution
            embeddings = np.random.normal(scale=0.15, size=shape)
            self.embeddings = [embeddings]

        articles = [EmbeddedArticle(
                        article["name"], self.embeddings[0][i],
                        set(token.lower() for token in article["lead_tokens"]))
                    for i, article in enumerate(data["articles"])]

        assert articles[0].title == "_Stop"
        assert articles[1].title == "_Dummy"
        stop_sentinel = 0

        datasets = {}
        for dataset_name, dataset in data["paths"].items():
            paths, original_lengths, n_skipped = [], [], 0
            for path in dataset:
                if len(path["articles"]) > path_length - 1:
                    n_skipped += 1
                    continue

                # Pad with STOP sentinel (every path gets at least one)
                pad_length = max(0, path_length + 1 - len(path["articles"]))
                original_length = len(path["articles"]) + 1
                path = path["articles"] + [stop_sentinel] * pad_length

                paths.append(path)
                original_lengths.append(original_length)

            print("%s set: skipped %i of %i paths due to length limit"
                  % (dataset_name, n_skipped, len(dataset)))
            datasets[dataset_name] = (paths, np.array(original_lengths))

        super(EmbeddedWikispeediaGraph, self).__init__(articles, datasets,
                                                       path_length,
                                                       stop_sentinel=stop_sentinel)