mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-06 12:30:57 +08:00
* Merge data selection to main * Update trainer for reweighter * Typos fixed. * update data selection interface * successfully run exp after refactor some interface * data selection share handler & trainer * fix meta model time series bug * fix online workflow set_uri bug * fix set_uri bug * updawte ds docs and delay trainer bug * docs * resume reweighter * add reweighting result * fix qlib model import * make recorder more friendly * fix experiment workflow bug * commit for merging master incase of conflictions * Successful run DDG-DA with a single command * remove unused code * asdd more docs * Update README.md * Update & fix some bugs. * Update configuration & remove debug functions * Update README.md * Modfify horizon from code rather than yaml * Update performance in README.md * fix part comments * Remove unfinished TCTS. * Fix some details. * Update meta docs * Update README.md of the benchmarks_dynamic * Update README.md files * Add README.md to the rolling_benchmark baseline. * Refine the docs and link * Rename README.md in benchmarks_dynamic. * Remove comments. * auto download data Co-authored-by: wendili-cs <wendili.academic@qq.com> Co-authored-by: demon143 <785696300@qq.com>
32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
"""
|
|
This module is not a necessary part of Qlib.
|
|
They are just some tools for convenience
|
|
It is should not imported into the core part of qlib
|
|
"""
|
|
import torch
|
|
import numpy as np
|
|
import pandas as pd
|
|
|
|
|
|
def data_to_tensor(data, device="cpu", raise_error=False):
|
|
if isinstance(data, torch.Tensor):
|
|
if device == "cpu":
|
|
return data.cpu()
|
|
else:
|
|
return data.to(device)
|
|
if isinstance(data, (pd.DataFrame, pd.Series)):
|
|
return data_to_tensor(torch.from_numpy(data.values).float(), device)
|
|
elif isinstance(data, np.ndarray):
|
|
return data_to_tensor(torch.from_numpy(data).float(), device)
|
|
elif isinstance(data, (tuple, list)):
|
|
return [data_to_tensor(i, device) for i in data]
|
|
elif isinstance(data, dict):
|
|
return {k: data_to_tensor(v, device) for k, v in data.items()}
|
|
else:
|
|
if raise_error:
|
|
raise ValueError(f"Unsupported data type: {type(data)}.")
|
|
else:
|
|
return data
|