前提・実現したいこと
chainerで画像分類モデルと学習の定義をしていました。
データセットをcifar10からIRISに変更したところ
以下のエラーが発生します。
発生している問題・エラーメッセージ
Exception in main training loop: Invalid operation is performed in: Convolution2DFunction (Forward)
該当のソースコード
python
1def train(batchsize=128, gpu_id=0, max_epoch=20, base_lr=0.01): 2 # 1. Dataset 3 #train_val, test = chainer.datasets.get_cifar10() 4 #train_size = int(len(train_val) * 0.9) 5 #train, valid = split_dataset_random(train_val, train_size, seed=0) 6 7 # Iris データセットの読み込み 8 dataset = load_iris() 9 10 # 入力値と目標値を別々の変数へ格納 11 x = dataset.data 12 t = dataset.target 13 14 # Chainer がデフォルトで用いる float32 型へ変換 15 x = np.array(x, np.float32) 16 t = np.array(t, np.int32) 17 18 # 入力値と目標値を引数に与え、`TupleDataset` オブジェクトを作成 19 dataset = TupleDataset(x, t) 20 21 n_train = int(len(dataset) * 0.7) 22 23 train, valid = split_dataset_random(dataset, n_train, seed=0) 24 25 # 2. Iterator 26 train_iter = iterators.MultiprocessIterator(train, batchsize) 27 valid_iter = iterators.MultiprocessIterator(valid, batchsize, False, False) 28 29 # 3. Model 30 model = DeepCNN(10) 31 net = L.Classifier(model) 32 33 # 4. Optimizer 34 optimizer = optimizers.MomentumSGD(lr=0.01).setup(net) 35 optimizer.add_hook(chainer.optimizer.WeightDecay(0.0005)) 36 37 # 5. Updater 38 updater = training.StandardUpdater(train_iter, optimizer, device=gpu_id) 39 40 # 6. Trainer 41 trainer = training.Trainer(updater, (max_epoch, 'epoch'), out='result-cifar-10') 42 43 # 7. Trainer extensions 44 trainer.extend(extensions.LogReport()) 45 trainer.extend(extensions.observe_lr()) 46 trainer.extend(extensions.Evaluator(valid_iter, net, device=gpu_id), name='val') 47 trainer.extend(extensions.PrintReport(['epoch', 'main/loss', 'main/accuracy', 'val/main/loss', 'val/main/accuracy', 'elapsed_time', 'lr'])) 48 trainer.extend(extensions.PlotReport(['main/loss', 'val/main/loss'], x_key='epoch', file_name='loss.png')) 49 trainer.extend(extensions.PlotReport(['main/accuracy', 'val/main/accuracy'], x_key='epoch', file_name='accuracy.png')) 50 trainer.extend(extensions.snapshot_object(model 51 , "model_epoch_{.updater.epoch}")) 52 trainer.extend(extensions.dump_graph("main/loss")) 53 54 trainer.run() 55 del trainer 56 57 # 8. Evaluation 58 test_iter = iterators.MultiprocessIterator(test, batchsize, False, False) 59 test_evaluator = extensions.Evaluator(test_iter, net, device=gpu_id) 60 results = test_evaluator() 61 print('Test accuracy:', results['main/accuracy']) 62 return model
python
1model = train()
補足情報(FW/ツールのバージョンなど)
google coraboratory 上で実行しています。
このサイトを参考に作成しています。
https://qiita.com/ta7uw/items/9301eef7dd74a249d5ea
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。