Data Science Asked by Mithril on December 5, 2020
I want to implement this paper: https://dl.acm.org/doi/pdf/10.1145/3269206.3271794
But I can’t understand how to generate Multiple Resolution Tensor R
.
I understand all the steps except the detail of step 3:
we can generate dr*(dr +1)/2 unique time series with different configurations of {⟨α, β⟩|α ∈ α, β ∈ β, α ≥ β} to represent multiple periodic time series distributions, in which dr = min(|α |, |β|).
we need 3 gru/lstm to generate 3 hidden state with ds
length
Generate Multiple Resolution Tensor R
Inspired by these recent advances, we propose a convolutional fusion
framework to summarize a multi-resolution tensor $ R ∈ R^{|α |× |β |×ds} $ into a conclusive representation. Here we use R to represent a
collection of time-evolving patterns generated from multiple time
resolutions. Namely, $ R_{i,j,1:ds} $ denotes a learned sequence
pattern representation $ h_t^{αi, βj} $ at time t w.r.t. temporal
resolution αi and interval resolution βj as described in Eq. 2. We
further apply a mirror padding along the diagonal to complete the
tensor. The generation process of R is shown in Figure 1.(b).
[dr*(dr +1)/2, ds]
, so I have to add one dim to [dr*(dr +1)/2, ds, 1]
to make it can be pass to conv2d , is this right ?Figure 1
write the ds
(gru hidden state length) as channels , and it also draw the channels size has to be divide by 2
in every conv2d layer .What is the correct way to generate Multiple Resolution Tensor R
?
I wrote a dummy model, you could reuse this :
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
data = pd.DataFrame(np.random.uniform(size=(1000,3)), columns=['Sales', 'SalesDiff7', 'SalesAggMean7'])
multi_inputs = []
multi_outputs = []
window_size = k
for i in range(data.shape[1]):
ti = keras.Input(shape=(window_size, 1), name=f't{i}')
tlstm = layers.LSTM(32)(ti)
multi_inputs.append(ti)
multi_outputs.append(tlstm)
r = tf.stack(multi_outputs, axis=-2)
r = tf.expand_dims(r, -1)
conv1 = tf.keras.layers.Conv2D(filters=16,
kernel_size=(2, 2), #padding='same',
activation='relu')(r)
conv2 = tf.keras.layers.Conv2D(filters=8,
kernel_size=(2, 2), #padding='same',
activation='relu')(conv1)
fc = tf.keras.layers.Flatten()(conv1)
result = keras.layers.Dense(units=1)(fc)
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP