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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Q&A

0回答

381閲覧

データセットコード作成

syosinnsya88

総合スコア0

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

0グッド

0クリップ

投稿2021/07/25 09:25

import

1import numpy as np 2from PIL import Image 3from sklearn.model_selection import train_test_split 4 5class DigitImage: 6 def __init__(self): 7 self.dataset = {} 8 9 def load_data(self, save_file, normalize=True, flatten=False, one_hot_label=True): 10 # save_fileがなければデータセットを作成, あればデータを読み込む 11 if not os.path.exists(save_file): 12 self.create_dataset(save_file) 13 else: 14 with open(save_file, 'rb') as f: 15 self.dataset = pickle.load(f) 16 17 if normalize: 18 # float32に変換して0~1の間になるよう正規化 19 self.dataset['img'] = self.dataset['img'].astype(np.float32) / 255 20 21 if not flatten: 22 self.dataset['img'] = self.dataset['img'].reshape(-1, 1, 28, 28) 23 24 if one_hot_label: 25 self.dataset['label'] = self.change_one_hot_label() 26 27 return self.dataset['img'], self.dataset['label'] 28 29 def change_one_hot_label(self): 30 T = np.zeros((self.dataset['label'].size, 10)) 31 for idx, row in enumerate(T): 32 row[self.dataset['label'][idx]] = 1 33 return T 34 35 def create_dataset(self, save_file): 36 image, label = [], [] 37 for i in range(10): 38 dir_path = os.path.join('dataset', str(i)) 39 filelist = [os.path.join(dir_path, file) for file in os.listdir(dir_path)] 40 41 # ファイル毎に画像を1次元のnumpy配列として追加していく 42 images = [] 43 for file in filelist: 44 _img = Image.open(file).convert('L') 45 _img = _img.resize((28, 28)) 46 _img = np.asarray(_img, dtype=np.uint8).reshape(-1) 47 images.append(_img) 48 image.extend(images) 49 50 label.extend([i] * len(filelist)) 51 52 self.dataset = {'img': np.array(image), 'label': np.array(label)} 53 with open(save_file, 'wb') as f: 54 pickle.dump(self.dataset, f) 55 56 57if __name__ == '__main__': 58 59 digit = DigitImage() 60 X, y = digit.load_data('digit_dataset.pkl', normalize=True, 61 flatten=False, one_hot_label=True) 62 print(X.shape) 63 print(y.shape) 64 65 # ここでロードしたデータを学習用とテスト用に分割. シャッフルもされる 66 X_train, X_test, y_train, y_test = train_test_split( 67 X.reshape((len(X), 28, 28, 1)), 68 y, train_size=0.6) 69 print(y_train[:10]) 70 71digit = DigitImage() 72X, y = digit.load_data('digit_dataset.pkl', normalize=True, 73 flatten=False, one_hot_label=True) 74print(X.shape) # (10000, 1, 28, 28) 75print(y.shape) # (10000, 10) 76コード

自作データセットをコード一行で読み込めるようにしたいです。ですがこのプログラムを実行するとファイルが作成されるのですが中身が文字化けしてしまいます。文字化けしないようにしたいので解決方法を教えていただきたいです。
https://www.yakupro.info/entry/digit-dataset
このサイトを参考にしています。

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

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

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

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

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

y_waiwai

2021/07/25 09:40

どういうデータセットを読んで、どういうふうに出力されるのでしょうか。 また、正常に出力されたらどうなる(と思われる)のか、追記しましょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問