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.