ぽきたに 〜ありきたりな非凡〜

日々の独り言とちょっとした発信

【Python】WAVファイルを等間隔に分割するプログラムpart2【サウンドプログラミング】

どうも、たっきーです。

今回は前回の続き。

 

 

なにする?

前回のヤァツの強化版作りたい。

前回のヤァツはファイル一個に対してしか分割できなかったけど、今回は複数ファイルを一括で等間隔で分割したい。

 

前回

tacky0612.hatenablog.com

 

環境

  • numpy 1.13.3
  • scipy 0.19-.1

 

下準備

f:id:tacky0612:20171124154839p:plain

とりあえず等間隔に分割したいWAVファイルを0〜n.wavというファイル名で用意する。(nはファイル数-1)

データ数が100ぐらいならいいけど、それより多くなると面倒くさいので自動で0〜nで名前をふれる方法があれば教えて欲しいでござる…。

  

コード

import wave
import struct
import math
import os
from scipy import fromstring, int16

# 一応既に同じ名前のディレクトリがないか確認。
file = os.path.exists("output")
print(file)

if file == False:
    #保存先のディレクトリの作成
    os.mkdir("output")

def cut_wav(filename,time,start):  # WAVファイルを刈り奪る 形をしてるだろ? 
    # timeの単位は[sec]

    # ファイルを読み出し
    wavf = str(filename) + '.wav'
    wr = wave.open(wavf, 'r')

    # waveファイルが持つ性質を取得
    ch = wr.getnchannels()
    width = wr.getsampwidth()
    fr = wr.getframerate()
    fn = wr.getnframes()
    total_time = 1.0 * fn / fr
    integer = math.floor(total_time) # 小数点以下切り捨て
    t = int(time)  # 秒数[sec]
    frames = int(ch * fr * t)
    num_cut = int(integer//t)

    # 確認用
#     print("Channel: ", ch)
#     print("Sample width: ", width)
#     print("Frame Rate: ", fr)
    print("Frame num: ", fn)
#     print("Params: ", wr.getparams())
    print("Total time: ", total_time ,"sec")
#     print("Total time(integer)",integer)
#     print("Time: ", t) 
#     print("Frames: ", frames) 
    print("Number of cut: ",num_cut)

    # waveの実データを取得し、数値化
    data = wr.readframes(wr.getnframes())
    wr.close()
    X = fromstring(data, dtype=int16)
#     print(X)


    for i in range(num_cut):
#         print(i)
        # 出力データを生成
        outf = 'output/' + str(i+start) + '.wav' 
        start_cut = i*frames
        end_cut = i*frames + frames
#         print(start_cut)
#         print(end_cut)
        Y = X[start_cut:end_cut]
        outd = struct.pack("h" * len(Y), *Y)

        # 書き出し
        ww = wave.open(outf, 'w')
        ww.setnchannels(ch)
        ww.setsampwidth(width)
        ww.setframerate(fr)
        ww.writeframes(outd)
        ww.close()
        
    return i+start+1 # 現在のカット済のファイル名の次を返す(はず)

n = 0
print("cut time = ")
cut_time = input()
print("Number of file = ")
a = input()
num_file = int(a)+1
print('=====================================================')
for name_file in range(int(num_file)):
    print("name_file : ",name_file,".wav")
    n = cut_wav(name_file,cut_time,n)
    print('return :',n)
    print('=====================================================')

 

前回書いたコードをちょっと手入れした。(ちょっと汚いコードなのは性格。)

cut_wav()をちょっと変更して、

  • returnでカット済のファイル名の次の値を返す
  • 始まりのファイル名を引数に追加

あとは、for文でcut_wav()を回してるだけ。 

分割したい時間と最後のファイル名(ファイル数-1)を指定できるようにしてある。

 

このコードをデータセットを同じディレクトリ内に保存する。

f:id:tacky0612:20171124163415p:plain

あとはターミナルで以下コマンド叩くだけ。

$ cd データセットとこのコードが入ってるディレクトリへのPath

$ python コード名(この場合cut_wav).py

 ってやると、分割したい時間と最後のファイル名(ファイル数-1)の入力を求められるので入力する。今回は1秒毎に分割したくて最後のファイル名が87.wavなので、cut_timeには1、Number of fileには87を入力する。

f:id:tacky0612:20171124164818p:plain

 こんな感じ。

   ↓ 終点 ↓

f:id:tacky0612:20171124164905p:plain

 最後のreturn(今回は1900)が分割後のファイル数になる。

同じディレクトリ内にoutputってディレクトリが生成され、その中に分割後のWAVファイルが格納されるようになっている。

f:id:tacky0612:20171124165215p:plain

 ※returnが1900なのに生成された最後のWAVファイルが1899なのは0〜1899で1900個であるため。(return に+1している為でもある。)

 

上手く分割出来た✌

 

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 
サウンドプログラミング入門――音響合成の基本とC言語による実装 (Software Design plus)

サウンドプログラミング入門――音響合成の基本とC言語による実装 (Software Design plus)

 

 

おわりに・感想

88個のWAVファイルを分割することで1900個のWAVファイルに増やすこと(いや、増えてはいないが)が出来た。

考えられる問題点は、1秒で分割したので1秒間が全部無音とかが存在しそうってことかな。(検証してないのでわからん)

そういうのがあったら機械学習やる上で不都合なのでどうにかして除去したい。

今日はこんなくらいで、さよならー。

 

 

 

【Python】WAVファイルを等間隔に分割するプログラム【サウンドプログラミング】

どうもこんにちは。たっきーです。

もうすっかり寒くなって暖房なしの氷河期部屋じゃ息ができませんね。。。

 

 

なにする?

タイトル通り、WAVファイルを等間隔で分割するプログラムをPythonで書く。

↓一秒に切り取ったWAVファイル。

f:id:tacky0612:20171121155747p:plain
piano/1.wav

 

モチベーション

機械学習用にデータセットを用意したい。

機械学習用のデータ[行列(配列?)]はデータの個数が等しくしなちゃめんどくさいので等間隔に切り取りたい。

Audacityを使って手作業で切り取るのもちょっと考えたけど、等間隔に切り取る作業初めて3秒で飽きた。

ちょっと人間には厳しいので、Pythonにやらせる。

つまり、自動化して楽したい。

 

環境

  • numpy 1.13.3
  • scipy 0.19-.1

 

コード

 

import wave
import struct
import math
import os
from scipy import fromstring, int16

# 一応既に同じ名前のディレクトリがないか確認。
file = os.path.exists("output")
print(file)

if file == False:
    #保存先のディレクトリの作成
    os.mkdir("output")

def cut_wav(filename,time):  # WAVファイルを刈り奪る 形をしてるだろ? 
    # timeの単位は[sec]

    # ファイルを読み出し
    wavf = filename + '.wav'
    wr = wave.open(wavf, 'r')

    # waveファイルが持つ性質を取得
    ch = wr.getnchannels()
    width = wr.getsampwidth()
    fr = wr.getframerate()
    fn = wr.getnframes()
    total_time = 1.0 * fn / fr
    integer = math.floor(total_time) # 小数点以下切り捨て
    t = int(time)  # 秒数[sec]
    frames = int(ch * fr * t)
    num_cut = int(integer//t)

    # 確認用
    print("Channel: ", ch)
    print("Sample width: ", width)
    print("Frame Rate: ", fr)
    print("Frame num: ", fn)
    print("Params: ", wr.getparams())
    print("Total time: ", total_time)
    print("Total time(integer)",integer)
    print("Time: ", t) 
    print("Frames: ", frames) 
    print("Number of cut: ",num_cut)

    # waveの実データを取得し、数値化
    data = wr.readframes(wr.getnframes())
    wr.close()
    X = fromstring(data, dtype=int16)
    print(X)


    for i in range(num_cut):
        print(i)
        # 出力データを生成
        outf = 'output/' + str(i) + '.wav' 
        start_cut = i*frames
        end_cut = i*frames + frames
        print(start_cut)
        print(end_cut)
        Y = X[start_cut:end_cut]
        outd = struct.pack("h" * len(Y), *Y)

        # 書き出し
        ww = wave.open(outf, 'w')
        ww.setnchannels(ch)
        ww.setsampwidth(width)
        ww.setframerate(fr)
        ww.writeframes(outd)
        ww.close()

print("input filename = ")
f_name = input()
print("cut time = ")
cut_time = input()
cut_wav(f_name,cut_time)

 

実行すると同じディレクトリ内にoutputというディレクトリが作成され、カットしたいファイル名とカットしたい時間[sec]の入力を求められるので入力してください。

※ファイル名に.wavの記入は必要ありません。

※カットしたいWAVファイルと同じ階層にこの.pyファイルを書く必要有り

 

↓一秒で等間隔にカットした結果。

f:id:tacky0612:20171121162539p:plain

 

f:id:tacky0612:20171121162550p:plain

上手く動いた✌

 

 

参考

qiita.com

yukara-13.hatenablog.com

 

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

 

 

 

入門 Python 3

入門 Python 3

 

 

 

おわりに・感想 

手作業でAudacityを使うと20分割するだけで10分ぐらいかかってたけど、これなら1分とかからず済むので強い💪

機械学習用データセット作り頑張るぞい。

print文は確認用なので消したほうがスッキリするぞい。 

tacky0612.hatenablog.com

MNISTはどういったデータの構造をしているのかについて考える。

 

どうもたっきーです。

最近、研究のモチベーションは高いけど大学に行くモチベーションはとても低い。

 

モチベーション

f:id:tacky0612:20171108182809p:plain

機械学習初心者なので、MNISTの784次元配列+ラベルのデータセットを分類したい対象のN次元配列+ラベルのデータセットに入れ替えると既存のコードで機械学習が簡単にできる。。。等と安直な考えでいる。

そのためにはMNISTってどんなデータの形しているのかしる必要があるので検証してみる。

 

環境 

  • macOS High Sierra 10.13
  • Python 3.6.3
  • Jupyter notebook 5.0.0
  • numpy 1.13.3
  • tensorflow 1.4.0

  

準備

まずはインポート

import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data

MNISTデータを取得する。

mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

すると以下が表示される。

 データの内容を表にまとめると以下になる。

ファイル名 データ
train-images-idx3-ubyte.gz 学習用画像データ
train-labels-idx1-ubyte.gz 学習用ラベルデータ
t10k-images-idx3-ubyte.gz テスト用画像データ
t10k-labels-idx1-ubyte.gz テスト用ラベルデータ

 

中身を見ていく

a = mnist.train.next_batch(1)

 mnist.train.next_batch()で学習用データからデータを取り出すメソッド。

引数は取り出すデータの数。

>>>print(a)

 
 
 
(array( 0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.40000004,  0.99607849,
         0.92156869,  0.29411766,  0.08235294,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.54509807,  0.99215692,  0.99215692,  0.99215692,
         0.88627458,  0.47058827,  0.03137255,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.45098042,
         0.99215692,  0.99215692,  0.99215692,  0.99215692,  0.99215692,
         0.89803928,  0.43137258,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.02352941,  0.13725491,  0.13333334,
         0.13333334,  0.62352943,  0.98039222,  0.99215692,  0.89411771,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.57254905,  0.99215692,  0.89411771,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.32156864,  0.88235301,  0.99215692,
         0.89411771,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.06666667,  0.49803925,
         0.89411771,  0.99215692,  0.90196085,  0.44313729,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.11764707,  0.21960786,
         0.54509807,  0.9450981 ,  0.99215692,  0.95686281,  0.65882355,
         0.32549021,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.1137255 ,
         0.72549021,  0.92941183,  0.99215692,  0.99215692,  0.99215692,
         0.99215692,  0.69411767,  0.37254903,  0.1254902 ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.2392157 ,  0.97647065,  0.99215692,
         0.99215692,  0.99215692,  0.99215692,  0.99215692,  0.99215692,
         0.99215692,  0.98431379,  0.94117653,  0.4666667 ,  0.01568628,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.37647063,  0.58039218,  0.58039218,  0.58039218,
         0.58039218,  0.89803928,  0.97254908,  0.98431379,  0.99215692,
         0.99215692,  0.99215692,  0.5529412 ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.16862746,  0.5411765 ,  0.99607849,  0.99215692,
         0.8588236 ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.02745098,
         0.75294125,  0.99215692,  0.99215692,  0.65490198,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.06666667,  0.47450984,  0.99215692,  0.99215692,
         0.80000007,  0.05490196,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.09019608,  0.76078439,
         0.99215692,  0.99215692,  0.67450982,  0.03529412,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.53725493,  0.93725497,  0.99215692,  0.99215692,  0.67450982,
         0.03529412,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.64313728,  0.29019609,  0.        ,
         0.04705883,  0.20000002,  0.82745105,  0.99215692,  0.99215692,
         0.81568635,  0.29019609,  0.02745098,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.09411766,
         0.90980399,  0.5529412 ,  0.40000004,  0.82745105,  0.99215692,
         0.99215692,  0.99215692,  0.83921576,  0.09411766,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.25490198,  0.99607849,  0.99215692,
         0.99215692,  0.99215692,  0.96470594,  0.81568635,  0.35686275,
         0.02352941,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.25490198,  0.99215692,  0.99215692,  0.99215692,  0.57647061,
         0.18039216,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
         0.        ,  0.        ,  0.        ,  0.        , dtype=float32), array( 0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.))

 

>>>print(type(a))
<class 'tuple'>

 これから取り出したデータの方はタプルで、a[0]に画像データ、a[1]にラベルデータが入っていることが分かる。

 

試しに print(a[0])をやってみると784個の配列が表示され、print(a[1])をやってみると10個の配列が表示される。

じゃあこれらのデータの型は?

>>>print(type(a[0]))
<class 'numpy.ndarray'>

>>>print(type(a[1]))

<class 'numpy.ndarray'>

numpy.ndarrayらしい。

↓ドキュメント

numpy.ndarray — NumPy v1.13 Manual

要するにNumpyの配列ってことかな??(わからん)

 

ちなみに画像データは0〜1の値をとり、0が白、1が黒になっている。

オリジナルのデータは0〜255の整数値で各ピクセルの濃度を表しているっぽい。

0〜1に変換して正規化しているっぽい(?)

 

ラベルデータは 「1-of-K」という方式で表現しているらしい。

例えば0なら[1,0,0,0,0,0,0,0,0,0]で、

2なら[0,0,1,0,0,0,0,0,0,0]と言った風のある要素だけが1で、それ以外が0なベクトルのこと。

配列の個数が分類したいデータの個数で、1のある位置がその要素。(語彙がないのでうまい表現が見つからない。)

 

画像データとラベルデータを分ける

以下のコードでimagesに画像データの配列、labelsにラベルデータの配列が入る。 とりあえず10個分のデータ入れてみる。

images, labels = mnist.train.next_batch(10)

 中身の確認をしよう。

 

images

IN

print(images)

OUT

[[ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 ..., 
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]]

IN

print(len(images))

OUT

10 

IN

print(type(images))

OUT

<class 'numpy.ndarray'>

 

 

ほう…imagesには784個のデータの配列が10個配列としてあって、型はnumpy.ndarrayって感じかな。

もっと深く見てみよう。

 

images[0]

IN

print(images[0])

OUT

[ 0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.00392157  0.33333334
  0.60784316  1.          0.63921571  0.53333336  0.53333336  0.08235294
  0.03137255  0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.05882353
  0.59215689  0.99215692  0.99215692  0.99215692  0.99215692  0.99215692
  0.99215692  0.99215692  0.76470596  0.51764709  0.03921569  0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.51372552  0.99215692  0.97254908  0.70980394  0.32156864  0.32156864
  0.49803925  0.87843144  0.99215692  0.99215692  0.99215692  0.58823532
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.26274511  0.96470594  0.98823535  0.43529415  0.          0.
  0.          0.          0.44313729  0.99215692  0.99215692  0.99215692
  0.73725492  0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.50980395  0.99215692  0.80784321  0.          0.
  0.          0.          0.30588236  0.89411771  0.99215692  0.99215692
  0.92941183  0.26666668  0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.44705886  0.97254908  0.99215692  0.09411766
  0.          0.          0.          0.          0.56470591  0.99215692
  0.99215692  0.99215692  0.61176473  0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.74117649  0.99215692
  0.98431379  0.04313726  0.01568628  0.10196079  0.49019611  0.84313732
  0.98823535  0.99215692  0.99215692  0.92549026  0.17647059  0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.
  0.74117649  0.99215692  0.80784321  0.1254902   0.80000007  0.99215692
  0.99215692  0.99215692  0.99215692  0.99215692  0.96862751  0.18431373
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.74117649  0.99215692  0.99215692  0.99215692
  0.99215692  0.99215692  0.87843144  0.87843144  0.99215692  0.99215692
  0.57647061  0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.35686275  0.76078439
  0.8705883   0.76078439  0.71764708  0.29803923  0.09019608  0.627451
  0.99215692  0.99215692  0.01960784  0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.10980393  0.          0.          0.          0.18039216
  0.94117653  0.99215692  0.50980395  0.00784314  0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.0627451
  0.73333335  0.99215692  0.68235296  0.01568628  0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.
  0.16470589  0.99215692  0.99215692  0.41960788  0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.
  0.07058824  0.80784321  0.99215692  0.81568635  0.07843138  0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.
  0.00392157  0.60784316  0.99215692  0.96470594  0.20392159  0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.41568631  0.99215692  0.99215692  0.45882356  0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.
  0.30588236  0.98039222  0.99215692  0.87450987  0.08235294  0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.
  0.11764707  0.82352948  0.99215692  0.96470594  0.34509805  0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.0509804   0.89803928  0.99215692  0.93725497  0.14901961  0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.25490198  0.97254908  0.6901961   0.02745098  0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.          0.          0.
  0.          0.          0.          0.          0.        ]​

IN

print(len(images[0]))

OUT

784

IN

print(type(images[0]))

OUT

<class 'numpy.ndarray'>

 

これからimagesに格納されている各配列はひとつ分の画像データに鳴っていることが分かる。型は<class 'numpy.ndarray'>。

もっと深く。

images[0][0]

IN

print(images[0][0])

OUT

0.0

IN

print(len(images[0][0]))

OUT

TypeError: object of type 'numpy.float32' has no len()

IN

print(type(images[0][0]))

OUT

<class 'numpy.float32'>

これから、imagesの配列になにが入ってるかわかった。型はnumpy.float32。

そりゃ、print(len(images[0][0]))はデータは配列じゃないのにエラー吐かれるわ。

 

ラベルデータに対しても似たような結果が得られた。

ただ、print(type(labels[0][0]))関してだけ、型が<class 'numpy.float64'>だった。

 

 

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

 

 

 

Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

 

 

 

TensorFlowで学ぶディープラーニング入門 ~畳み込みニューラルネットワーク徹底解説~

TensorFlowで学ぶディープラーニング入門 ~畳み込みニューラルネットワーク徹底解説~

 

 

 

 

おわりに・今後・感想

今回得た配列を分類したいやつの配列に入れ替えるとどうなるのか試してみる。

このデータセットみたいに0〜1に正規化する必要があるのかな??

まぁ、そのデータセットどうやって作ろうかな…って感じではある。

(データセットってどうやってつくるのか…?)

numpy.ndarrayに分類対象の配列を入れたらいいのかな???

そしてそれに1-of-Kでラベルデータを付与すれば良い?

とりあえずMNISTライクなデータセット用意するところから始めたらいいのかな???

そもそも機械学習・深層学習はどの程度データがあればいいんや????

 

???ばかりが頭に浮かぶ

機械学習畑の方、ぜひご教授ください…。

 

そういや関係ないけど、iPhone X発売されましたね。

ほしい。

 

スポンサードリンク