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

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

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

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

Q&A

解決済

3回答

2440閲覧

jupyter notebook上でMNISTデータを読み込みたい

daisuke_factex

総合スコア42

Python 3.x

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

1グッド

0クリップ

投稿2017/08/02 07:05

###前提・実現したいこと
jupyter notebookを利用しているものです。
MNISTデータを読み込もうとしているのですが、できません。
同じような質問が有り、「ライブラリとディレクトリを同じにする」との回答があるのですが、
理解ができませんでした。
具体的にはどこの(?)のファイルと同じものにすれば良いのでしょうか

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

import sys,os sys.path.append(os.pardir) from dataset.mnist import load_mnist (x_train, t_train),(x_train, t_test) = \ load_mnist(flatten=True, normalize=False) print(x_train.shape) print(t_train.shape) print(x_test.shape) print(t_test.shape)

###該当のソースコード

ModuleNotFoundError Traceback (most recent call last) <ipython-input-3-1c315c6a2d7a> in <module>() 1 import sys,os 2 sys.path.append(os.pardir) ----> 3 from dataset.mnist import load_mnist 4 5 (x_train, t_train),(x_train, t_test) = load_mnist(flatten=True, normalize=False) ModuleNotFoundError: No module named 'dataset'

###試したこと
添付した図のようにMNISTの入っているファイル(左)と読み込むファイル(右)を
同じディレクトリに入れた(と思います・・・・)イメージ説明

###補足情報(言語/FW/ツール等のバージョンなど)
Ubuntu16.04
jupyter notebookを使用

SaOu👍を押しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

sys.path.append(os.pardir)ではモジュール探索パスを追加していますが、~/ch03/neuralnet_mnist.pyなどを直接実行することが前提です。

以下のいずれかの方法で探索パスを追加することでnotebook(.ipynb)上でも利用できるようになります。

※パスが/home/hoge/jupyter_notebook/deep-learning-from-scratch-masterの場合

方法1:環境変数PYTHONPATHにパスを追加する

~/.bashrcに以下を追加する。

sh

1export PYTHONPATH="/home/hoge/jupyter_notebook/deep-learning-from-scratch-master:$PYTHONPATH"

方法2:sys.path.appendで追加する

Python

1import os,sys 2sys.path.append(r'/home/hoge/jupyter_notebook/deep-learning-from-scratch-master') 3from dataset.mnist import load_mnist 4# 略

方法1のほうが、notebook(.ipynb)の配置場所を気にしなくてよいので、より便利だと思います。

参考:Pythonで他のディレクトリからプログラムをimportするやり方

投稿2017/08/02 08:22

can110

総合スコア38266

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

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

daisuke_factex

2017/08/02 09:01

can110様、アンサーありがとうございます。 方法2、の方では実行してみたところ正常に動くようになりました!ありがとうございます! 贅沢なお願いなのですが、方法1でも動かしてみたくなり、 .bashrcがログイン後に別のシェルにした時の読み込む設定ファイル、とまではわかったのですが、 ''' cd /home/hoge/jupyter_notebook/deep-learning-from-scratch-master ''' の後に、 ''' export PYTHONPATH="/home/hoge/jupyter_notebook/deep-learning-from-scratch-master:$PYTHONPATH" ''' と打てばよいのでしょうか・・・?(無知で申し訳ないです)
can110

2017/08/02 09:07

ちょっと手順が分かりづらかったですね。 ホームディレクトリ「~/」にある「.bashrc」という設定ファイルをテキストエディタで開き「export ~」という行を追加するということです。 linux操作に慣れていない場合は、方法2でもよいかと思います。
daisuke_factex

2017/08/02 09:46

.bashrcなどの知識を入れてから実行しないと大変なことになりそうなので、 方法2でしばらくはやっていこうと思います。ありがとうございました!
guest

0

質問から時間が相当立っていますが,,,,
自分はゼロから始めるdeep learningを勉強していて,同様の問題にぶつかりました.

自分の場合は,pip list内(pip listで確認可能)にdatasetファイルが既に存在していたので,
それと今回のサンプルデータを差別化するために,datasetのファイル名を変更⇒ディレクトリを合わせる⇒インポートしたところ,正常に動作しました.

初心者なので,このようなことしかできないのですが,,,,

投稿2022/07/14 14:44

SaOu

総合スコア6

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

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

0

「ライブラリとディレクトリを同じにする」

というのは

deep-learning-from-scratch ディレクトリ以下にある、commondataset という名前のディレクトリと、ノートブック(.ipynb)が保存されているディレクトリを同じにするという事かと思います。

ですが、単にノートブック上でmnistのデータを読みたいということであれば、コンソール上で、datasetディレクトリに以下にある mnist.py を実行すると作成される mnist.pkl ファイルをノートブック(.ipynb)が保存されているディレクトリ上にコピーし、ノートブック上で

Python

1import pickle 2with open('mnist.pkl','r') as f: 3 dataset = pickle.load(f)

として読み込めばよいのではないでしょうか。

投稿2017/08/02 08:25

編集2017/08/02 10:33
magichan

総合スコア15898

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

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

daisuke_factex

2017/08/02 09:15

回答ありがとうございます, 今、 ’’’ import pickle with open('mnist.py','r') as f: dataset = pickle.load(f) import sys,os from dataset.mnist import load_mnist (x_train, t_train),(x_test, t_test) = \ load_mnist(flatten=True, normalize=False) print(x_train.shape) print(t_train.shape) print(x_test.shape) print(t_test.shape) ’’’ で実行したところ、 ’’’ --------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) <ipython-input-1-59737f593dbd> in <module>() 2 3 import pickle ----> 4 with open('mnist.py','r') as f: 5 dataset = pickle.load(f) 6 FileNotFoundError: [Errno 2] No such file or directory: 'mnist.py' ’’’ とエラーが出てきてしまいました・・・。
magichan

2017/08/02 10:36 編集

申し訳ない 記述ミスしておりました。 open("mnist.py","r") ではなくて open("mnist.pkl","r") ですね。 これをloadした dataset には既に mnistデータが辞書型で格納されておりますので、それ以降の from dataset import load_mnist と、次行の load_mnist()の実行 は不要です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問