Python Colaboratory
各デ-タセットの内容表示
ここまで、3種の timeseries_dataset を作成しました。
引き続き、どんなデ-タができたのかその内容を表示します。
できあがった tensorflow 配列の中身を分かりやすく表示するには
TensorFlow ライブラリの Tensor.numpy() 関数
を使用して Tensor 配列 を NumPy 配列に変換してそれを表示するのが簡単なのですが、
今回は多くのデ-タができているので、全部を表示するのではなく、肝心な、
最初と最後のみの部分を表示するようにします。
訓練デ-タを例に説明します。
train_dataset を samples 配列と targets 配列
に分離します。
for samples, targets in train_dataset:
その上で、テンソル samples 配列、targets 配列をそれぞれ、
NumPy 配列に変換してそれらを表示します。
samples_n = samples.numpy()
targets_n = targets.numpy()
print(samples_n, targets_n)
そうすると、20個のデ-タからなる samples_n 配列と
1個の値からなる targets_n 配列が順番に表示されます。
でも、表示量が多すぎますので、
最初に初期 itr = 0 としておき、
itr == 0 の時だけ表示して、最初の配列値を表示します。
そして、for 分処理が完了したら、最後の配列値を表示して、途中の値表示は省略するようにします。
val_dataset, test_dataset 分もまとめると、以下のようになります。
# 訓練デ-タセット表示 itr = 0 for samples, targets in train_dataset: samples_n = samples.numpy() targets_n = targets.numpy() if itr == 0: print("Start in-train:", samples_n[0]) print("Start tar-train:", targets_n[0]) itr = itr + 1 print("End in-train:", samples_n[-1]) print("End tar-train:", targets_n[-1]) # 検証デ-タセット表示 itv = 0 for samples_v, targets_v in val_dataset: samples_vn = samples_v.numpy() targets_vn = targets_v.numpy() if itv == 0: print("Start in-val:", samples_vn[0]) print("Start tar-val:", targets_vn[0]) itv = itv + 1 print("End in-val:", samples_vn[-1]) print("End tar-val:", targets_vn[-1]) # テストデ-タセット表示 i = 0 for inputs_t in test_dataset: inputs_n = inputs_t.numpy() if i == 0: print("Start test:", inputs_n[0]) i = i + 1 print("End test:", inputs_n[-1])
CSV デ-タを利用した timeseries_dataset ファイル全まとめ
timeseries_dataset ファイル後半も含め、これまでのところをまとめます。
前半部分 keras-test-50.ipynb に後半部分をマ-ジし、新たに
keras-test-51.ipynb としそのファイル内容を表示します。
マ-ジした部分は赤字にしています。
import numpy as np import pandas as pd from matplotlib import pyplot as plt from tensorflow import keras xl_df = pd.read_csv("drive/MyDrive/Colab Notebooks/my_data/colab-data.csv") day = xl_df["Date"].values raw_data0 = xl_df["Value"].values print("raw_data0.shape:", raw_data0.shape) print("raw_data0") print(raw_data0) plt.plot(range(len(raw_data0)), raw_data0) raw_data = raw_data0.copy() # 行列の平均、標準偏差を求めます。 mean = np.mean(raw_data) print("Mean", mean) raw_data -= mean std = np.std(raw_data) print("Std ",std) # 標準偏差値に変換 raw_data /= std print("各標準偏差値") print(raw_data) # 連続デ-タとする。一つおきは、2 sampling_rate = 1 # 過去20間隔デ-タをひとまとまりとして時系列予測する sequence_length = 20 delay = sampling_rate * sequence_length print("delay:", delay) batch_size = 32 # 適当 # 検証デ-タのスタ-ト値 num_half_samples = int(0.5 * len(raw_data)) train_dataset = keras.utils.timeseries_dataset_from_array( raw_data, targets=raw_data[delay:], sampling_rate=sampling_rate, sequence_length=sequence_length, batch_size=batch_size, ) val_dataset = keras.utils.timeseries_dataset_from_array( raw_data[:-1], targets=raw_data[delay:], sampling_rate=sampling_rate, sequence_length=sequence_length, batch_size=batch_size, start_index=num_half_samples, ) test_dataset = keras.utils.timeseries_dataset_from_array( raw_data, targets=None, sampling_rate=sampling_rate, sequence_length=sequence_length, batch_size=batch_size, ) # numpy ndarray 配列に変換して表示 # 訓練デ-タセット表示 itr = 0 for samples, targets in train_dataset: samples_n = samples.numpy() targets_n = targets.numpy() if itr == 0: print("Start in-train:", samples_n[0]) print("Start tar-train:", targets_n[0]) itr = itr + 1 print("End in-train:", samples_n[-1]) print("End tar-train:", targets_n[-1]) # 検証デ-タセット表示 itv = 0 for samples_v, targets_v in val_dataset: samples_vn = samples_v.numpy() targets_vn = targets_v.numpy() if itv == 0: print("Start in-val:", samples_vn[0]) print("Start tar-val:", targets_vn[0]) itv = itv + 1 print("End in-val:", samples_vn[-1]) print("End tar-val:", targets_vn[-1]) # テストデ-タセット表示 i = 0 for inputs_t in test_dataset: inputs_n = inputs_t.numpy() if i == 0: print("Start test:", inputs_n[0]) i = i + 1 print("End test:", inputs_n[-1])
引き続き、keras-test-51 の動作確認をします。