目次
3. DataSetを使用してfashion_MNIST分類モデルを書き直します。
numpyのndarrayデータ型とデータ操作と同様に、TensorFlowはtf.data.DataSetモジュールを提供します。これは、データの入力と出力を便利に処理し、多数のデータ計算と変換をサポートします。tf.data.DataSetには1つ以上が含まれます。テンサーオブジェクト。
1つは、DataSetの作成です。
tensorから直接tf.data.DataSetを作成し、tf.data.DataSet.from_tensor_slices()関数を使用します。関数パラメーターは、python独自のデータ型リストまたはnumpy.ndarrayにすることができます。
# 可以从list,从numpy.ndarray创建 dataset
X= np.array([1.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,7.042,10.791,5.313,7.997,5.654,9.27,3.1])
Y= np.array([[1.3,4.4],[5.5,6.71]])
dataset1=tf.data.Dataset.from_tensor_slices([1,2,3,4]) # list 创建
dataset2=tf.data.Dataset.from_tensor_slices(X) # numpy 创建
dataset2
データセットのタイプはtensorslicedatasetです。ループを使用して各要素がテンソルであることを確認するか、numpyメソッドを使用できます。
for i in dataset2.take(2):
print(i)
print(i.numpy())
2. DataSetの一般的な機能:
1.データは、モデリングの前に次のように処理できます。
①shuffle()関数は、順不同の操作を提供します。
②repeat()関数はデータリピート操作を提供します。
③batch()関数はバッチ読み取り関数を提供します。
X= np.array([1.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,7.042,10.791,5.313,7.997,5.654,9.27,3.1])
dataset2=tf.data.Dataset.from_tensor_slices(X) # numpy 创建
data_shuffle=dataset2.shuffle(3) # 打乱数据
data_repeat=dataset2.repeat(count=2) # 数据重复
data_batch=dataset2.batch(2) # 数据批量读取
2.マップ機能を含むデータ変換
dataset_sq=dataset2.map(tf.square)
3. DataSetを使用してfashion_MNIST分類モデルを書き直します。
以前の処理方法との違いは、モデリングの前にデータに対していくつかの変換が実行され、モデルトレーニングプロセスの検証データが追加されることです。
import matplotlib.pyplot as plt
import tensorflow as tf
import pandas as pd
import numpy as np
%matplotlib inline
(train_image,train_lable),(test_image,test_lable)=tf.keras.datasets.fashion_mnist.load_data()
plt.imshow(train_image[11]) # image show
ds_train_image=tf.data.Dataset.from_tensor_slices(train_image) # 加载数据
ds_train_lable=tf.data.Dataset.from_tensor_slices(train_lable) # 加载数据
# 打乱数据,无线重复,成批读取
da_train=tf.data.Dataset.zip((ds_train_image,ds_train_lable)).shuffle(10000).repeat().batch(64)
# 测试数据集
ds_test_image=tf.data.Dataset.from_tensor_slices(test_image) # 加载数据
ds_test_lable=tf.data.Dataset.from_tensor_slices(test_lable) # 加载数据
ds_test=tf.data.Dataset.zip((ds_test_image,ds_test_lable)).batch(64)
model=tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28,28)),
tf.keras.layers.Dense(128,activation="relu"),
tf.keras.layers.Dense(10,activation="softmax")
])
model.compile(optimizer="adam",loss="sparse_categorical_crossentropy",metrics=["acc"])
train_image.shape[0]//64
history=model.fit(da_train,
epochs=5,
steps_per_epoch=train_image.shape[0]//64,
validation_data=ds_test,
validation_steps=test_image.shape[0]//64
)
model.evaluate(test_image,test_lable)
plt.plot(history.epoch,history.history.get('loss'))
plt.plot(history.epoch,history.history.get('acc'))