从keras中的TimeseriesGenerator获取实际使用的目标,而不是输入的目标
Get the actually used targets, not the input ones, from the TimeseriesGenerator in keras
假设我使用 keras 创建了以下时间序列生成器:
from tensorflow.keras.preprocessing.sequence import TimeseriesGenerator
gen = TimeseriesGenerator(data=[1,2,3,4,5,6,7,8,9], targets=[1,2,3,4,5,6,7,8,9], length=2, batch_size=1, start_index=5)
因为它有设置 start_index=5
它将跳过前 5 个数据点,所以 gen
只包含这些实际可用的数据:
# first are the data points [x_n, x_m] and then is the corresponding label/target [y_n]
print(gen[0])
print(gen[1])
>> (array([[6, 7]]), array([8]))
>> (array([[7, 8]]), array([9]))
我想要的是一种简单的方法来提取所有实际可用的 targets/labels/ground 真相,比如
print(gen.actual_targets)
>> [8,9]
但我最接近的是
print(gen.targets)
>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
它只给出了输入目标,而不是真正使用的目标。那么,我怎样才能从生成器中得到实际可用的目标呢?谢谢
也许你可以使用 TimeseriesGenerator.start_index
和 TimeseriesGenerator.end_index
:
gen.targets[gen.start_index:gen.end_index + 1]
[8, 9]
假设我使用 keras 创建了以下时间序列生成器:
from tensorflow.keras.preprocessing.sequence import TimeseriesGenerator
gen = TimeseriesGenerator(data=[1,2,3,4,5,6,7,8,9], targets=[1,2,3,4,5,6,7,8,9], length=2, batch_size=1, start_index=5)
因为它有设置 start_index=5
它将跳过前 5 个数据点,所以 gen
只包含这些实际可用的数据:
# first are the data points [x_n, x_m] and then is the corresponding label/target [y_n]
print(gen[0])
print(gen[1])
>> (array([[6, 7]]), array([8]))
>> (array([[7, 8]]), array([9]))
我想要的是一种简单的方法来提取所有实际可用的 targets/labels/ground 真相,比如
print(gen.actual_targets)
>> [8,9]
但我最接近的是
print(gen.targets)
>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
它只给出了输入目标,而不是真正使用的目标。那么,我怎样才能从生成器中得到实际可用的目标呢?谢谢
也许你可以使用 TimeseriesGenerator.start_index
和 TimeseriesGenerator.end_index
:
gen.targets[gen.start_index:gen.end_index + 1]
[8, 9]