LoginSignup
Logarithm
@Logarithm

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

for文の中にわからないコードがあった

解決したいこと

RNNを実行する際のデータセットを作製しているコードを見ている中で、わからない記述があったので質問させていただきます。
RNNで10個先のデータを予測する際に、タイムステップごとに予測し、その値を格納していく予定です。

該当するソースコード

import tensorflow as tf
import tensorflow.keras as keras
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(42)

#sin波を作成する関数
def generate_time_series(batch_size, n_steps):
    freq1, freq2, offsets1, offsets2 = np.random.rand(4, batch_size, 1)
    time = np.linspace(0, 1, n_steps)
    series = 0.5 * np.sin((time - offsets1) * (freq1 * 10 + 10))  #   wave 1
    series += 0.2 * np.sin((time - offsets2) * (freq2 * 20 + 20)) # + wave 2
    series += 0.1 * (np.random.rand(batch_size, n_steps) - 0.5)   # + noise
    return series[..., np.newaxis].astype(np.float32)

#データセットを作製
n_steps = 50
series = generate_time_series(10000, n_steps + 10)
X_train = series[:7000, :n_steps]
X_valid = series[7000:9000, :n_steps]
X_test = series[9000:, :n_steps]
Y = np.empty((10000, n_steps, 10))
for step_ahead in range(1, 10 + 1):
    #この部分のstep_ahead:step_ahead + n_stepsがわからない。
    Y[..., step_ahead - 1] = series[..., step_ahead:step_ahead + n_steps, 0]
Y_train = Y[:7000]
Y_valid = Y[7000:9000]
Y_test = Y[9000:]```

0

1Answer

series変数には numpy のSeries型のデータが入っているようです。
pythonではSeries型を含め、リストのような列に対して、スライス(一部分だけ取り出す)操作ができます。
参照: https://note.nkmk.me/python-numpy-ndarray-slice/

今回の例では、step_ahead番目から step_ahead+_n_steps 番目までの要素が取り出され、さらに0番目の要素が取り出されて、Y変数(これもリスト)に代入されます。

0

Your answer might help someone💌