機械学習の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
パッケージですね。
データタイプ
int
やfloat
になります。
必要そうなものを列挙してみます。
項目 | データタイプ |
---|---|
真理値判定 | bool |
数値型 | int, float, complex |
文字列 | str |
シーケンス型(配列) | list, tuple, range |
マッピング型 | dict |
データ型については、Pythonの公式ドキュメントも参考にしてください。