前提・実現したいこと
『Pythonで始めるOpenCV4プログラミング』という書籍の第10章”MNISTを用いた学習モデルの作成”(p.216)のサンプルコードをそのまま実行したのですが、以下のようなエラーメッセージが出てしまいました。エラーを解消したいのですがなぜKeyErrorが出てしまうのかわからずとても困っております。
例外処理をする必要があるということでしょうか、もしそうであるならば具体的にどの部分を書き換えれば良いのでしょうか?
初学者で何もわからず申し訳ないですが、どなたか解決方法がわかる方がいらっしゃいましたら
教えていただきたいです。
発生している問題・エラーメッセージ
Python 3.8.8 (default, Apr 13 2021, 12:59:45) Type "copyright", "credits" or "license" for more information. IPython 7.22.0 -- An enhanced Interactive Python. runfile('/Users/miaflower/make_model.py', wdir='/Users/miaflower') Start epoch 0 Traceback (most recent call last): File "/Users/miaflower/make_model.py", line 47, in <module> x = Variable(x_all[indexs[i : i + BATCHSIZE]]) File "/opt/anaconda3/lib/python3.8/site-packages/pandas/core/frame.py", line 3030, in __getitem__ indexer = self.loc._get_listlike_indexer(key, axis=1, raise_missing=True)[1] File "/opt/anaconda3/lib/python3.8/site-packages/pandas/core/indexing.py", line 1266, in _get_listlike_indexer self._validate_read_indexer(keyarr, indexer, axis, raise_missing=raise_missing) File "/opt/anaconda3/lib/python3.8/site-packages/pandas/core/indexing.py", line 1308, in _validate_read_indexer raise KeyError(f"None of [{key}] are in the [{axis_name}]") KeyError: "None of [Int64Index([ 8363, 44943, 6962, 40302, 64698, 58902, 9962, 68144, 68545,\n 37871, 49060, 36529, 11171, 46401, 21564, 59294, 12095, 2954,\n 54450, 14691, 35618, 16016, 53500, 48268, 50841, 13789, 12789,\n 53963, 611, 68550, 69846, 12360, 48802, 65886, 61789, 52416,\n 60490, 51389, 55589, 39022, 49837, 43100, 15836, 36418, 46460,\n 54358, 44632, 2409, 16902, 52151, 18362, 47333, 18249, 17864,\n 28831, 33707, 33689, 57039, 55866, 3042, 33362, 26184, 61385,\n 46469, 62669, 14920, 20764, 24117, 25784, 23875, 53789, 56604,\n 4463, 64751, 38053, 67550, 40583, 68994, 9136, 21743, 9412,\n 39266, 46382, 467, 9231, 41938, 4457, 52492, 69380, 33762,\n 69215, 63896, 11640, 39437, 4268, 65423, 55650, 13733, 65032,\n 21953],\n dtype='int64')] are in the [columns]"
該当のソースコード(前半を省略しています)
print('Start') mnist_X, mnist_y = fetch_openml('mnist_784', version=1, data_home=".", return_X_y=True) x_all = mnist_X.astype(np.float32) / 255 y_all = mnist_y.astype(np.int32) model = MyMLP() optimizer = optimizers.SGD() optimizer.setup(model) BATCHSIZE = 100 DATASIZE = 70000 for epoch in range(20): print('epoch %d' % epoch) indexs = np.random.permutation(DATASIZE) for i in range(0, DATASIZE, BATCHSIZE): x = Variable(x_all[indexs[i : i + BATCHSIZE]]) t = Variable(y_all[indexs[i : i + BATCHSIZE]]) model.zerograds() y = model(x) loss = F.softmax_cross_entropy(y, t) loss.backward() optimizer.update() serializers.save_npz('mymodel.npz', model) print('Finish')
環境
Python 3.8.8
Mac OS
回答1件
あなたの回答
tips
プレビュー
2021/11/19 09:20
2021/11/19 09:27
2021/11/20 11:12