前提・実現したいこと
Auto-kerasをGoogleColabのTPUを使って学習させたいです。
1つ目のTrialの数エポックまではうまく学習しているのですが、その後以下のエラーメッセージとともに終了してしまいます。
発生している問題・エラーメッセージ
UnimplementedError: File system scheme '[local]' not implemented (file: '/content/drive/MyDrive/実験データ/subI/auto_model/trial_b1a8c10f4540eaf90078fd7714498f50/checkpoints/epoch_3/checkpoint_temp/part-00000-of-00001') Encountered when executing an operation using EagerExecutor. This error cancels all future operations and poisons their output tensors. [Op:__inference_train_function_22192]
該当のソースコード
Python
1import shutil 2import autokeras as ak 3import tensorflow.keras as ks 4import np_utils 5from sklearn.datasets import fetch_openml 6import pandas as pd 7import numpy as np 8import matplotlib 9import matplotlib.pyplot as plt 10from PIL import Image 11import glob 12import os 13#from keras.preprocessing.image import load_img, img_to_array 14import sys 15import pickle 16import requests 17from tqdm import tqdm 18from io import StringIO 19# 画像用 20#from keras.preprocessing.image import array_to_img, img_to_array, load_img 21#自作モジュール 22from module import sep_dataset, line_send, pre_treatment, model_evaluation, set_datarange 23 24import tensorflow as tf 25 26 27#教師データが入っているフォルダのパス 28train_folder_path = '/content/drive/MyDrive/実験データ/subI' 29#モデルの最大試行回数 30max_model = 20 31 32#モデル構築(Auto-kerasのモデル設定) 33def make_model(): 34 input_node = ak.ImageInput() 35 output_node = ak.ImageBlock(normalize=False, augment=False, )(input_node) 36 output_node = ak.ClassificationHead()(output_node) 37 model = ak.AutoModel(inputs=input_node, outputs=output_node, overwrite=True, max_trials=max_model, directory=train_folder_path,) 38 return model 39 40#テスト・トレーニングデータに分離、検証データの入れ替え及び全パターンの組み合わせの作成 41t1, v1 = sep_dataset.main(train_folder_path, 0) 42t2, v2 = sep_dataset.main(train_folder_path, 1) 43t3, v3 = sep_dataset.main(train_folder_path, 2) 44train = [] 45val = [] 46for i in range(len(t1)): 47 train.append([t1[i]]+[t2[i]]+[t3[i]]) 48 val.append([v1[i]]+[v2[i]]+[v3[i]]) 49 50#前回学習中断箇所の取得(r=中断箇所のセルのrow、 c=中断箇所のセルのcolumn、 v=検証データの数字、 p=何個目の分割パターンかの数字) 51r, c, v, p = set_datarange.main(train_folder_path) 52 53#全パターンを回す 54for count in range(p, len(val)): 55 for i in range(v,3): 56 #データの前処理 57 X_train, Y_train = pre_treatment.main(train[count][i], len(train[count][i])) 58 X_test, Y_test = pre_treatment.main(val[count][i], len(val[count][i])) 59 60 tf.keras.backend.clear_session() 61 resolver = tf.distribute.cluster_resolver.TPUClusterResolver('grpc://' + os.environ['COLAB_TPU_ADDR']) 62 tf.config.experimental_connect_to_cluster(resolver) 63 64 # This is the TPU initialization code that has to be at the beginning. 65 tf.tpu.experimental.initialize_tpu_system(resolver) 66 print("All devices: ", tf.config.list_logical_devices('TPU')) 67 68 strategy = tf.distribute.experimental.TPUStrategy(resolver) 69 70 with strategy.scope(): 71 model = make_model() 72 73 #モデルの訓練(学習) 74 model.fit(X_train, Y_train, validation_data=(X_test, Y_test)) 75 76 #モデル精度評価 77 model_evaluation.main(X_test, Y_test, model, val, train_folder_path, count, i) 78 v = 0 79 80line_send.main('CNNの解析が終了しました')
あなたの回答
tips
プレビュー