Код: Выделить всё
import os
from omegaconf import OmegaConf
import pandas as pd
import torch
import dataset as module_data
import model as module_arch
import metric as module_metric
from utils import MetricTracker, get_data_path
END_DATE = '2024-03-22'
def get_test_dollar_price(start_date, end_date):
"""
Do not fix this function
"""
df = pd.read_csv(get_data_path('Bitcoin'), index_col="Date", parse_dates=True, na_values=['nan'])
df.sort_index(inplace=True)
price = df.loc[start_date:end_date, ['Price']][-10:].values
return price
def main(config):
test_dataset = getattr(module_data, config.dataset.type)(end_date=END_DATE,
is_training=False,
**config.dataset.args)
test_dataloader = getattr(torch.utils.data, config.dataloader.type)(test_dataset,
batch_size=1,
shuffle=False,
num_workers=0,)
###################################################################################################################
# inspect test data
if abs(test_dataset.y.numpy() - get_test_dollar_price('2024-03-12', END_DATE)).sum() > 1e-3:
raise ValueError('your test data is wrong!')
###################################################################################################################
model = getattr(module_arch, config.model.type)(input_size=test_dataset.__getitem__(0)[0].size(0), **config.model.args)
model.load_state_dict(torch.load(config.test.load_path))
model.eval()
# GPU
device = torch.device('mps')
model = model.to(device)
metrics = [getattr(module_metric, met) for met in config.test.metrics]
metric_tracker_test = MetricTracker(*config.test.metrics)
for i, (x, y) in enumerate(test_dataloader):
x, y = x.to(device), y.to(device)
pred_y = model(x)
print(f'[DAY {i+1:02d}] predict : {pred_y[0].item():.1f} | target : {y[0].item():.1f}')
for met in metrics:
metric_tracker_test.update(met.__name__, met(pred_y, y))
print('\nTEST ' + ', '.join([f'{k.upper()}: {v:.2f}' for k, v in metric_tracker_test.result().items()]))
Я много раз менял дату. но результат тот же
Подробнее здесь: https://stackoverflow.com/questions/784 ... p-learning