13.4. GTDF¶
Examples
13.4.1. example_gtdf.py¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #
# coding: utf-8
# Copyright (C) pSeven SAS, 2010-present
#
def usage_example():
"""
Example of usage
"""
def getTrainData(sample_size, dim, noisy):
import random
x, f = [], []
for _ in range(sample_size):
x.append([random.uniform(0, 1) for _ in range(dim)])
f.append(x[-1][0] + sum(v**2 for v in x[-1][1:]))
if noisy:
f[-1] += x[-1][-1]
return x, f
dim = 3
sample_size_hf = 10
sample_size_lf = sample_size_hf * 10
# Prepare high fidelity sample
x_hf, f_hf = getTrainData(sample_size_hf, dim, False)
# Prepare low fidelity sample
x_lf, f_lf = getTrainData(sample_size_lf, dim, True)
from da.p7core import gtdf
from da.p7core.loggers import StreamLogger
# create builder
builder = gtdf.Builder()
# set logger, by default output of StreamLogger -- to sys.stdout
builder.set_logger(StreamLogger())
# train model
model = builder.build(x_hf, f_hf, x_lf, f_lf, options={'GTDF/loglevel': 'Info'})
# calculate errors
def calc_rms_error(model, x_sample, f_sample):
import math
assert(model.size_f == 1)
f_evaluated = [model.calc(x)[0] for x in x_sample]
squared_errors = [(f_1 - f_2)**2 for f_1, f_2 in zip(f_sample, f_evaluated)]
return math.sqrt(sum(squared_errors) / len(squared_errors))
sample_size_test = 1000
x_hf, f_hf = getTrainData(sample_size_test, dim, False)
x_lf, f_lf = getTrainData(sample_size_test, dim, True)
print('RMS errors: %s' % ('-'*30))
print('HF rms error: %.15g' % calc_rms_error(model, x_hf, f_hf))
print('LF rms error: %.15g' % calc_rms_error(model, x_lf, f_lf))
# print info about model
print(str(model))
def main():
"""
Example of GTDF usage.
"""
import random
random.seed(100)
print('GTDF usage example: %s\n' % ('=' * 40))
usage_example()
if __name__ == "__main__":
main()
|