KeyError: «Имя« предсказания »относится к операции, не отображаемой на графике». - PullRequest
0 голосов
/ 04 мая 2020

У меня есть класс FaceDetector и некоторые методы, такие как нейронные net, build_model, Forex и т. Д. c.

При написании кода ниже, я сталкиваюсь с ошибкой, упомянутой в название:

graph = tf.compat.v1.get_default_graph()
all_names = [op.name for op in graph.get_operations()]
print('y_pred' in all_names)
input_x = graph.get_tensor_by_name("input_x:0")
y_pred = graph.get_operation_by_name("predictions").outputs[0]`

В любом случае, моя переменная y_pred не определена в области действия функции / метода, в котором этот код существует.

Мой код с y_pred выглядит следующим образом:

y_pred = self.neural_net(input_x)`

, где neural_net имеет два скрытых слоя и полностью подключенный выходной слой.

Я запускаю другой скрипт Он называется «Foregnate.py», который, в свою очередь, вызывает этот настоящий сценарий.

Нужна помощь здесь ..

Метод прогнозирования, который содержит этот код выше, выглядит следующим образом:

def predict(self, X_valid, y_valid):
        """
        Returns a dictionary containing the model's predictions as well as the ground truth,
        encoded as integers

        Positional arguments:

            X_valid -- the validation samples, as numpy flat ndarray

            y_valid -- the validation labels, as one-hot-encoded arrays

        """
        sess=tf.compat.v1.Session()   
        saver = tf.compat.v1.train.import_meta_graph(os.path.join(os.getcwd(), 'saved_model','my_test_model.meta'))
        saver.restore(sess,tf.train.latest_checkpoint(os.path.join(os.getcwd(), 'saved_model')))


        graph = tf.compat.v1.get_default_graph()
        # for op in graph.get_operations():
        #     print(str(op.name))
        all_names = [op.name for op in graph.get_operations()]
        print('y_pred' in all_names)
        input_x = graph.get_tensor_by_name("input_x:0")
        y_pred = graph.get_operation_by_name("predictions").outputs[0]

        print("\nMaking predictions...:")

        predi_list = []
        ground_truth_list = []

        print("running sess")
        predi =sess.run(y_pred, feed_dict={input_x:X_valid})
        predi_list += list(predi)
        ground_truth_list +=  [np.argmax(item) for item in y_valid]

        pred_dic ={}
        ground_truth = [np.argmax(item) for item in y_valid]
        pred_dic = {'predictions':list(predi), 'ground_truth':ground_truth }
        return pred_dic`
...