fastai モデルをエクスポートして再ロードするたびに、再ロードされたモデルを使用して新しいテスト セットで予測を生成しようとすると、次のエラー (または非常に類似したエラー) が発生します。
RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.cuda.HalfTensor) should be the same
FILES_DIR
以下の最小限の再現可能なコード例では、MNIST データがシステムに保存される場所に変数を更新するだけで済みます。
from fastai import *
from fastai.vision import *
# download data for reproduceable example
untar_data(URLs.MNIST_SAMPLE)
FILES_DIR = '/home/mepstein/.fastai/data/mnist_sample' # this is where command above deposits the MNIST data for me
# Create FastAI databunch for model training
tfms = get_transforms()
tr_val_databunch = ImageDataBunch.from_folder(path=FILES_DIR, # location of downloaded data shown in log of prev command
train = 'train',
valid_pct = 0.2,
ds_tfms = tfms).normalize()
# Create Model
conv_learner = cnn_learner(tr_val_databunch,
models.resnet34,
metrics=[error_rate]).to_fp16()
# Train Model
conv_learner.fit_one_cycle(4)
# Export Model
conv_learner.export() # saves model as 'export.pkl' in path associated with the learner
# Reload Model and use it for inference on new hold-out set
reloaded_model = load_learner(path = FILES_DIR,
test = ImageList.from_folder(path = f'{FILES_DIR}/valid'))
preds = reloaded_model.get_preds(ds_type=DatasetType.Test)
出力:
「RuntimeError: 入力タイプ (torch.cuda.FloatTensor) と重みタイプ (torch.cuda.HalfTensor) は同じでなければなりません」
ステートメントごとにコードをステップ実行すると、pred = ...
上記のトーチ エラーが表示される最後の行まで、すべて正常に動作します。
関連するソフトウェア バージョン:
Python 3.7.3 fastai 1.0.57
トーチ 1.2.0 トーチ
ビジョン 0.4.0