質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Q&A

0回答

2446閲覧

chainerにおけるKeyError

zazenjp

総合スコア7

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

0グッド

0クリップ

投稿2018/01/19 01:06

お世話になっております。chainerでの人口知能解析を試みています。チュートリアルのmnistでうまく動いたので自分のデータに変えて動かしたのですが、Keyerrorというのがでてしまってうまく行きません。どこが悪いでしょうか?

●実行したコード
import numpy as np
import pandas as pd
import chainer
from chainer import cuda, Function, gradient_check, report, training, utils, Variable
from chainer import datasets, iterators, optimizers, serializers
from chainer import Link, Chain, ChainList
import chainer.functions as F
import chainer.links as L
from chainer.training import extensions
from sklearn.model_selection import train_test_split

csvファイルの読み込み

data_f = pd.read_csv('svmdattotal.csv', header=0)

関係ありそうなT,lohg(A/T),Workのみを使う

data_f = data_f[["T", "log(A/T)", "Work"]]
data_f_train, data_f_test = train_test_split(data_f, test_size=0.3)
from chainer import iterators

batchsize = 128

train_iter = iterators.SerialIterator(data_f_train, batchsize)
test_iter = iterators.SerialIterator(
data_f_test, batchsize, repeat=False, shuffle=False)
import chainer.links as L
import chainer.functions as F
import random
import numpy
random.seed(0)
numpy.random.seed(0)

import chainer

if chainer.cuda.available:
chainer.cuda.cupy.random.seed(0)
import chainer
import chainer.links as L
import chainer.functions as F

class MLP(chainer.Chain):

def __init__(self, n_mid_units=100, n_out=10): super(MLP, self).__init__() # パラメータを持つ層の登録 with self.init_scope(): self.l1 = L.Linear(None, n_mid_units) self.l2 = L.Linear(n_mid_units, n_mid_units) self.l3 = L.Linear(n_mid_units, n_out) def __call__(self, x): # データを受け取った際のforward計算を書く h1 = F.relu(self.l1(x)) h2 = F.relu(self.l2(h1)) return self.l3(h2)

gpu_id = 0 # CPUを用いる場合は、この値を-1にしてください

net = MLP()

if gpu_id >= 0:
net.to_gpu(gpu_id)
from chainer import optimizers

optimizer = optimizers.SGD(lr=0.01)
optimizer.setup(net)
import numpy as np
from chainer.dataset import concat_examples
from chainer.cuda import to_cpu

max_epoch = 10

while train_iter.epoch < max_epoch:

# ---------- 学習の1イテレーション ---------- train_batch = train_iter.next() x, t = concat_examples(train_batch, gpu_id) # 予測値の計算 y = net(x) # ロスの計算 loss = F.softmax_cross_entropy(y, t) # 勾配の計算 net.cleargrads() loss.backward() # パラメータの更新 optimizer.update() # --------------- ここまで ---------------- # 1エポック終了ごとにValidationデータに対する予測精度を測って、 # モデルの汎化性能が向上していることをチェックしよう if train_iter.is_new_epoch: # 1 epochが終わったら # ロスの表示 print('epoch:{:02d} train_loss:{:.04f} '.format( train_iter.epoch, float(to_cpu(loss.data))), end='') test_losses = [] test_accuracies = [] while True: test_batch = test_iter.next() x_test, t_test = concat_examples(test_batch, gpu_id) # テストデータをforward y_test = net(x_test) # ロスを計算 loss_test = F.softmax_cross_entropy(y_test, t_test) test_losses.append(to_cpu(loss_test.data)) # 精度を計算 accuracy = F.accuracy(y_test, t_test) accuracy.to_cpu() test_accuracies.append(accuracy.data) if test_iter.is_new_epoch: test_iter.epoch = 0 test_iter.current_position = 0 test_iter.is_new_epoch = False test_iter._pushed_position = None break print('val_loss:{:.04f} val_accuracy:{:.04f}'.format( np.mean(test_losses), np.mean(test_accuracies)))

from chainer import serializers

serializers.save_npz('my_mnist.model', net)

ちゃんと保存されていることを確認

%ls -la my_mnist.model

●KeyErrorの内容

KeyError Traceback (most recent call last)
~\Anaconda3\envs\chainenv\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2524 try:
-> 2525 return self._engine.get_loc(key)
2526 except KeyError:

pandas_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 519

During handling of the above exception, another exception occurred:

KeyError Traceback (most recent call last)
<ipython-input-1-465e50b1bed3> in <module>()
72
73 # ---------- 学習の1イテレーション ----------
---> 74 train_batch = train_iter.next()
75 x, t = concat_examples(train_batch, gpu_id)
76

~\Anaconda3\envs\chainenv\lib\site-packages\chainer\iterators\serial_iterator.py in next(self)
55 batch = self.dataset[i:i_end]
56 else:
---> 57 batch = [self.dataset[index] for index in self._order[i:i_end]]
58
59 if i_end >= N:

~\Anaconda3\envs\chainenv\lib\site-packages\chainer\iterators\serial_iterator.py in <listcomp>(.0)
55 batch = self.dataset[i:i_end]
56 else:
---> 57 batch = [self.dataset[index] for index in self._order[i:i_end]]
58
59 if i_end >= N:

~\Anaconda3\envs\chainenv\lib\site-packages\pandas\core\frame.py in getitem(self, key)
2137 return self._getitem_multilevel(key)
2138 else:
-> 2139 return self._getitem_column(key)
2140
2141 def _getitem_column(self, key):

~\Anaconda3\envs\chainenv\lib\site-packages\pandas\core\frame.py in _getitem_column(self, key)
2144 # get column
2145 if self.columns.is_unique:
-> 2146 return self._get_item_cache(key)
2147
2148 # duplicate columns & possible reduce dimensionality

~\Anaconda3\envs\chainenv\lib\site-packages\pandas\core\generic.py in _get_item_cache(self, item)
1840 res = cache.get(item)
1841 if res is None:
-> 1842 values = self._data.get(item)
1843 res = self._box_item_values(item, values)
1844 cache[item] = res

~\Anaconda3\envs\chainenv\lib\site-packages\pandas\core\internals.py in get(self, item, fastpath)
3841
3842 if not isna(item):
-> 3843 loc = self.items.get_loc(item)
3844 else:
3845 indexer = np.arange(len(self.items))[isna(self.items)]

~\Anaconda3\envs\chainenv\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2525 return self._engine.get_loc(key)
2526 except KeyError:
-> 2527 return self._engine.get_loc(self._maybe_cast_indexer(key))
2528
2529 indexer = self.get_indexer([key], method=method, tolerance=tolerance)

pandas_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 519

●以上です。ご教授願えますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問