Python Keras Tensorflow и Watchdog не будут работать вместе

Код, который я написал, выполняет модель, которую я изучал ранее, когда конкретный файл изменяется. Но Керас всегда выдает ошибку. Я проверил, были ли они запущены отдельно, код работает. Керас может делать прогноз, а сторожевой таймер может отслеживать файл. Но когда я объединю их, они не будут. Кто-нибудь когда-нибудь сталкивался с этой проблемой или есть какое-то решение этой проблемы?

Код:

class Watcher:
    DIRECTORY_TO_WATCH = 'Files'
    def __init__(self):
        self.observer = Observer()

    def run(self):
        event_handler = Handler()
        self.observer.schedule(event_handler, self.DIRECTORY_TO_WATCH)
        self.observer.start()

        try:
            while True:
                # time in second
                time.sleep(5)
        except:
            self.observer.stop()
            print('Error')

        self.observer.join()

    def stop(self):
        self.observer.stop()
        self.observer.join()

def writeToFile(arr, filename):
    w = open(filename, 'w')
    for a in arr:
        w.write(','.join(map(str, a))+'\n')
    w.close()

class Handler(FileSystemEventHandler):
    @staticmethod
    def on_modified(event):
        # super(Handler, self).on_modified(event)
        if event.src_path == 'input.txt':
            # print("Received modified event - %s." % event.src_path)

            if lastCalc[-1][-1] != datetime.datetime.now().hour or lastCalc[-1][-2] != datetime.datetime.now().month or lastCalc[-1][-2] != datetime.datetime.now().day:

                lastCalc.pop(0)

                f = open('input.txt', 'r')

                guess = []
                guess.append(lastCalc)
                pre = model.predict(np.asarray(guess))
                result = pre

                w = open('output.txt', 'w')
                w.write(result[0][0] + '\n')
                w.write(result[0][1] + '\n')
                w.write(result[0][2] + '\n')
                w.close()

                writeToFile(lastCalc, 'lastCalc.txt')

if __name__ == '__main__':
    w = Watcher()
    w.run()

Ошибка:

Traceback (most recent call last):
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\threading.py", line 923, in _bootstrap_inner
    self.run()
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\watchdog\observers\api.py", line 199, in run
    self.dispatch_events(self.event_queue, self.timeout)
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\watchdog\observers\api.py", line 368, in dispatch_events
    handler.dispatch(event)
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\watchdog\events.py", line 330, in dispatch
    _method_map[event_type](event)
  File "C:/Users/ideapad/Dropbox/TA/preprocessTA/runit.py", line 147, in on_modified
    pre = model.predict(np.asarray(guess))
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\keras\models.py", line 1025, in predict
    steps=steps)
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\keras\engine\training.py", line 1832, in predict
    self._make_predict_function()
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\keras\engine\training.py", line 1029, in _make_predict_function
    **kwargs)
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\keras\backend\tensorflow_backend.py", line 2502, in function
    return Function(inputs, outputs, updates=updates, **kwargs)
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\keras\backend\tensorflow_backend.py", line 2445, in __init__
    with tf.control_dependencies(self.outputs):
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 4304, in control_dependencies
    return get_default_graph().control_dependencies(control_inputs)
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 4017, in control_dependencies
    c = self.as_graph_element(c)
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 3035, in as_graph_element
    return self._as_graph_element_locked(obj, allow_tensor, allow_operation)
  File "C:\Users\ideapad\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 3114, in _as_graph_element_locked
    raise ValueError("Tensor %s is not an element of this graph." % obj)
ValueError: Tensor Tensor("dense_1/Softmax:0", shape=(?, 3), dtype=float32) is not an element of this graph.

0 ответов

Другие вопросы по тегам