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

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

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

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2401閲覧

cifar10のデータセット作成時のエラーメッセージについて

trafalbad

総合スコア303

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/05/27 15:43

編集2017/05/29 03:43

cifar10のデータセットを作成しようとしたとこを下記のエラーが出てしましいました。unpickle()でファイルを読み込んでいます。

def unpickle(file): fo = open(file, 'rb') dict = cPickle.load(fo) fo.close() return dict

どのようにすればいいのでしょうか?

X_train = np.empty((0,32*32*3)) y_train = np.empty(1) for i in range(1,6): data_dict = unpickle("data_batch_1".format(i)) if i == 1: X_train = data_dict['data'] y_train = data_dict['labels'] else: X_train = np.vstack((X_train, data_dict['data'])) y_train = np.hstack((y_train, data_dict['labels'])) data_dict = unpickle('test_batch') X_test = data_dict['data'] y_test = np.array(data_dict['labels']) bm = unpickle('batches.meta') label_names = bm['label_names'] #エラーメッセージ TypeError Traceback (most recent call last) <ipython-input-9-f0302af1121f> in <module>() 6 data_dict = unpickle("data_batch_1".format(i)) 7 if i == 1: ----> 8 X_train = data_dict['data'] 9 y_train = data_dict['labels'] 10 else: TypeError: 'type' object is not subscriptable

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

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

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

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

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

can110

2017/05/29 02:51

unpickle()とは何でしょうか?
trafalbad

2017/05/29 03:42 編集

cifar10のデータセットを読み込む関数です。別のところで定義してありますが、unpickel化してデータを読み込むためのものです。引数にはファイル名が入ります。
guest

回答1

0

ベストアンサー

unpicle関数内の変数dictがPythonの組込型名dictと同一のためにエラーが発生したようです。

参考:TypeError: 'type' object is not subscriptable when indexing in to a dictionary

dictdなどの別の変数名に変更すると解決すると思います。
ただ、こちらの環境python2.7ではdictでも問題なく動作しましたが。

なおdata_dict = unpickle("data_batch_1".format(i))は意図しない動作をすると思いますが、指摘のみ。

Python

1import cPickle 2import numpy as np 3 4def unpickle(file): 5 fo = open(file, 'rb') 6 #dict = cPickle.load(fo) 7 d = cPickle.load(fo) 8 fo.close() 9 #return dict 10 return d 11 12X_train = np.empty((0,32*32*3)) 13y_train = np.empty(1) 14for i in range(1,6): 15 #fname = "data_batch_{0}".format(i) 16 fname = "data_batch_1".format(i) 17 print(fname) 18 data_dict = unpickle(fname) 19 if i == 1: 20 X_train = data_dict['data'] 21 y_train = data_dict['labels'] 22 else: 23 X_train = np.vstack((X_train, data_dict['data'])) 24 y_train = np.hstack((y_train, data_dict['labels'])) 25print(X_train) 26print(y_train)
data_batch_1 data_batch_1 data_batch_1 data_batch_1 data_batch_1 [[ 59 43 50 ..., 140 84 72] [154 126 105 ..., 139 142 144] [255 253 253 ..., 83 83 84] ..., [ 71 60 74 ..., 68 69 68] [250 254 211 ..., 215 255 254] [ 62 61 60 ..., 130 130 131]] [6 9 9 ..., 1 1 5]

投稿2017/05/29 04:03

can110

総合スコア38233

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問