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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

20975閲覧

python pickle load出来ない

gajumaru

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

0クリップ

投稿2018/10/25 10:27

前提・実現したいこと

ゼロから始めるディープラーニング1という本の第3章の手書き数字認識の所のコードの問題です。
ニューラルネットワークを用いた手書き数字認識のコードで、もともとgithubに用意されているコードを用いているのですが、エラーが出てしまい、sample_weight.pklというファイルが読み込めません。どうしたらよろしいでしょうか。

発生している問題・エラーメッセージ

エラーメッセージ

Traceback (most recent call last): File "neuralnet_mnist.py", line 36, in <module> network = init_network() File "neuralnet_mnist.py", line 17, in init_network network = pickle.load(f) _pickle.UnpicklingError: invalid load key, '\xc2'.

該当のソースコード

python

1# coding: utf-8 2import sys, os 3sys.path.append(os.pardir) # 親ディレクトリのファイルをインポートするための設定 4import numpy as np 5import pickle 6from dataset.mnist import load_mnist 7from common.functions import sigmoid, softmax 8 9 10def get_data(): 11 (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, flatten=True, one_hot_label=False) 12 return x_test, t_test 13 14 15def init_network(): 16 with open("sample_weight.pkl", 'rb') as f: 17 network = pickle.load(f) 18 return network 19 20 21def predict(network, x): 22 W1, W2, W3 = network['W1'], network['W2'], network['W3'] 23 b1, b2, b3 = network['b1'], network['b2'], network['b3'] 24 25 a1 = np.dot(x, W1) + b1 26 z1 = sigmoid(a1) 27 a2 = np.dot(z1, W2) + b2 28 z2 = sigmoid(a2) 29 a3 = np.dot(z2, W3) + b3 30 y = softmax(a3) 31 32 return y 33 34 35x, t = get_data() 36network = init_network() 37accuracy_cnt = 0 38for i in range(len(x)): 39 y = predict(network, x[i]) 40 p= np.argmax(y) # 最も確率の高い要素のインデックスを取得 41 if p == t[i]: 42 accuracy_cnt += 1 43 44print("Accuracy:" + str(float(accuracy_cnt) / len(x)))

試したこと

調べましたが、特に有用な情報は得られませんでした。

補足情報

python 3.7.0

cmbnur👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

手元環境で試しましたが、問題なくpickleとして読み込めました。

操作をミスってファイルを破壊してしまった可能性があるので、もう一度ダウンロードしてファイルを置き換えてから実行してみてはどうでしょうか?

https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/ch03/sample_weight.pkl

投稿2018/10/25 11:15

hayataka2049

総合スコア30933

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

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

gajumaru

2018/10/25 11:37

ご回答ありがとうございます。 一回置き換えをした時は出来なかったので、質問させていただきました。 今回行ったところなぜか出来ました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問