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

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

ただいまの
回答率

90.84%

  • Chainer

    118questions

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

chainerにおけるKeyError

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 257

zazenjp

score 1

お世話になっております。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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

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

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

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Chainer

    118questions

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