У меня есть класс 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`