У меня проблемы с некоторым Python-кодом, над которым я сейчас работаю. Я обучил модель с тензорным потоком и сейчас пытаюсь ее использовать. Поэтому я сделал небольшой Tkinter-GUI, который должен выполнять прогон прямой связи со случайным вектором в качестве ввода каждый раз, когда я нажимаю кнопку. Первые несколько попыток, это всегда работает, но после нескольких запусков я получаю SIGSEGV-ошибку:
«Процесс завершен с кодом выхода 139 (прерван сигналом 11: SIGSEGV)»
У кого-нибудь есть идея, что может вызвать эту проблему? Я подозреваю, что это как-то связано с тем, как Tkinter обрабатывает свои функции-обратные вызовы
Вот соответствующие строки моего кода:
В моей GUI-инициализации я загружаю свою модель Tensorflow:
tf.reset_default_graph()
saver = tf.train.import_meta_graph('./train/infer/infer.meta')
graph = tf.get_default_graph()
self.sess = tf.InteractiveSession()
saver.restore(self.sess, 'model.ckpt-93624')
initialize_tf_model()
self.z = graph.get_tensor_by_name('z:0')
self.G_z = graph.get_tensor_by_name('G_z:0')
И после этого я инициализирую свою кнопку функцией как команда:
self.slogan2 = Button(frame,
text="Test",
command=self.foo_function)
self.slogan2.pack(side=LEFT)
А вот моя функция foo_function, которая выполняет прямую передачу:
def foo_function(self):
_z = (np.random.rand(1, 100) * 2.) - 1
_G_z = self.sess.run(self.G_z, {self.z: _z})
Кто-нибудь знает, что я могу делать не так?
Большое спасибо!