def get_future_labels()

in anticipation/anticipation/datasets/epic_future_labels.py [0:0]


    def get_future_labels(self, graph, end_frame, graph_data):

        frames, graphs = graph_data['frames'], graph_data['graphs']
        final_graph = graphs[-1]['G']

        # for each node, get future labels
        future_verbs, future_labels, future_ints = [], [], []
        for node in sorted(graph.nodes()):
            visits = copy.deepcopy(final_graph.node[node]['members'])
            for visit in visits:
                visit['start'] = frames[visit['start']]
                visit['stop'] = frames[visit['stop']]

            if self.task=='anticipation':
                future_visits = [visit for visit in visits if visit['start'][1]>end_frame]
            elif self.task=='recognition':
                future_visits = [visit for visit in visits if visit['stop'][1]<end_frame]

            vfuture, nfuture, ifuture = self.visits_to_labels(future_visits)
            future_verbs.append(vfuture)
            future_labels.append(nfuture)
            future_ints.append(ifuture)

        future_verbs = torch.stack(future_verbs, 0)
        future_labels = torch.stack(future_labels, 0)
        future_ints = torch.stack(future_ints, 0)

        return {'verbs':future_verbs, 'nouns':future_labels, 'ints':future_ints}