Tutorials#
GitHubThe following tutorials can be also found as notebooks on GitHub.
Train your own data#
tfts supports multi-type time series prediction:
single-value single-step prediction
single-value multi-steps prediction
multi-value single-step prediction
multi-value multi-steps prediction
Feed the input data into the model#
# tf.data.Dataset
batch_size = 1
train_length = 10
predict_sequence_length = 5
x = tf.random.normal([batch_size, train_length, 1])
encoder_feature
tf.data.Dataset
list or tuple for (x, encoder_feature, decoder_features)
array for single variable prediction
Features#
datetime features
static features
dynamic features
from tfts.features import feature_registry, registry
feature_registry = feature_registry
feature_registry.register(["some features"])
@registry
def add_custom_features():
return
Train the models#
Multi-GPU training with tf.distribute
Mixed precision with tf.keras.mixed_precision
import tensorflow as tf
import tfts
from tfts import AutoModel, AutoConfig, kerasTrainer
model_name = 'seq2seq
loss_fn = tf.keras.losses.MeanSquaredError()
optimizer = tf.keras.optimizers.Adam(0.003)
config = AutoConfig.for_model(model_name_or_path)
model = AutoModel.from_config(config=config, predict_sequence_length=12)
trainer = KerasTrainer(model, loss_fn=loss_fn, optimizer=optimizer)
history = trainer.train(
dataset_train, dataset_val, epochs=10, batch_size=32,
)
Custom-defined configuration#
Change the model parameters. If you want touch more parameters in model config, please raise an issue in github.
import tensorflow as tf
import tfts
from tfts import AutoModel, AutoConfig
config = AutoConfig.for_model('rnn')
print(config)
custom_model_config = {
"rnn_size": 128,
"dense_size": 128,
}
config.update(custom_model_config)
model = AutoModel('rnn', config=config)
Multi-variables and multi-steps prediction#
import tensorflow as tf
import tfts
from tfts import AutoModel, AutoConfig
config = AutoConfig.for_model('rnn')
print(config)
config.update({
"rnn_size": 128,
"dense_size": 128,
})
print(config)
model = AutoModel.from_config(config, predict_sequence_length=7)
x = tf.random.normal([1, 14, 1])
encoder_features = tf.random.normal([1, 14, 10])
decoder_features = tf.random.normal([1, 7, 3])
model()
Custom head for classification or anomaly task#
Set up the custom-defined head layer to do the classification task or anomaly detection task
import tensorflow as tf
import tfts
from tfts import AutoModel, AutoConfig, AutoTuner
config = AutoConfig.for_model('rnn')
custom_model_head = tf.keras.Sequential(
Dense(1)
)
model = AutoModel.from_config(config, custom_model_head=custom_model_head)
Custom-defined trainer#
You could use tfts trainer, custom trainer or use keras to train directly.
import tensorflow as tf
from tensorflow.keras.layers import Dense, Input
import tfts
from tfts import AutoModel, AutoConfig
train_length = 24
train_features = 15
predict_sequence_length = 16
inputs = Input([train_length, train_features])
config = AutoConfig.for_model('seq2seq')
backbone = AutoModel.from_config(config, predict_sequence_length=predict_sequence_length)
outputs = backbone(inputs)
outputs = Dense(1, activation="sigmoid")(outputs)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.compile(loss="mse", optimizer="rmsprop")
model.fit(x, y)
Deployment in tf-serving#
save the model
import tensorflow as tf
import tfts
from tfts import AutoModel, AutoConfig, AutoTuner
serve the model with tf-serving
import tensorflow as tf
import tfts
from tfts import AutoModel, AutoConfig, AutoTuner