データマイニングのアルゴリズムと実践(13):tf.data.DataSetモジュールを使用してデータを処理する

 目次

1つは、DataSetの作成です。

2. DataSetの一般的な機能:

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'))

おすすめ

転載: blog.csdn.net/yezonggang/article/details/106490552