機械学習のExampleから覚えるPython(型:データタイプ)

今までPythonを感覚的に使っていたので、改めて文法を知ろうかなと。
その際にいま流行りの機械学習(深層学習)のExampleを例にすると
わかりやすいのかなと思ったので書いてみる。

※基本的には Python3.x系のつもりで記載してます

Example

https://www.tensorflow.org/tutorials/ に記載されている

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

※本記事記載の時点のコードです。

上記Exampleでも、代入記述先(関数の返り値)には型:データタイプがあります。

それぞれ見ていきたいと思います。

mnist = tf.keras.datasets.mnist
>>> type(mnist)
module

tf.keras.datasets.mnist は tensorflow/tensorflow/python/keras/datasets/mnist.pyのとおり importできるモジュール(パッケージ)になります。

(x_train, y_train),(x_test, y_test) = mnist.load_data()
>>> type(x_train)
numpy.ndarray
>>> x_train.dtype
dtype('uint8')

numpyモジュールの多次元配列型になります。
更にデータタイプを dtypeで確認することができます。
データロード時は uint8ですね。

x_train, x_test = x_train / 255.0, x_test / 255.0
>>> type(x_train)
numpy.ndarray
>>> x_train.dtype
dtype('float64')

先ほどと同じくnumpyモジュールの多次元配列型になります。
ただし、255.0という float型で除算しているためデータタイプは float64になってます。

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
>>> type(model)
tensorflow.python.keras.engine.sequential.Sequential

こちらも、importできる Sequentialパッケージですね。

データタイプ

intfloatになります。

必要そうなものを列挙してみます。

項目 データタイプ
真理値判定 bool
数値型 int, float, complex
文字列 str
シーケンス型(配列) list, tuple, range
マッピング dict

データ型については、Pythonの公式ドキュメントも参考にしてください。