6

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

4

2 に答える 2