| import torch |
| import pandas as pd |
| import torch.nn as nn |
|
|
| class CSVToTensor: |
| def __init__(self, file_path): |
| self.data_frame = pd.read_csv(file_path) |
| len_dataset = len(self.data_frame) |
| self.game_tensor = torch.zeros((len_dataset, 9), dtype=torch.float32) |
| self.prediction_tensor = torch.zeros((len_dataset, 9), dtype=torch.float32) |
| |
| def csv_to_tensor(self, pos): |
| if pos >= len(self.data_frame): |
| raise ValueError("Position is greater than the number of data in the dataset") |
| |
| data_pos = self.data_frame.iloc[pos] |
| game_stat = data_pos.values[0:9] |
| prediction_stat = data_pos.values[9:18] |
|
|
| self.game_tensor[pos] = torch.tensor(game_stat, dtype=torch.float32) |
| self.prediction_tensor[pos] = torch.tensor(prediction_stat, dtype=torch.float32) |
|
|
| def tensor_to_view(self, pos): |
| if pos >= len(self.data_frame): |
| raise ValueError("Position is greater than the number of data in the dataset") |
|
|
| if torch.equal(self.game_tensor[pos], torch.zeros(9)) or torch.equal(self.prediction_tensor[pos], torch.zeros(9)): |
| raise ValueError("No tensor data found at this position") |
| |
| symbols = {0: ' ', 1: 'x', 2: 'o', 3: 'O'} |
| board = [] |
| for i in range(9): |
| if self.game_tensor[pos][i] == 1: |
| board.append(1) |
| elif self.game_tensor[pos][i] == 2: |
| board.append(2) |
| elif self.prediction_tensor[pos][i] == 2: |
| board.append(3) |
| else: |
| board.append(0) |
| |
| print("\nCurrent Game State:") |
| for i in range(0, 9, 3): |
| print(f"{symbols[board[i]]} | {symbols[board[i+1]]} | {symbols[board[i+2]]}") |
| if i < 6: |
| print("---------") |
|
|
| def print_data(self): |
| print(self.data_frame) |
|
|
| def create_all_tensor(self): |
| for i in range(len(self.data_frame)): |
| self.csv_to_tensor(i) |
| return self.game_tensor, self.prediction_tensor |
| |
| def create_a_dataset(self): |
| return torch.utils.data.TensorDataset(self.game_tensor, self.prediction_tensor) |
|
|
| |
| if __name__ == '__main__': |
| position = 0 |
| tensor = CSVToTensor('./Datasets/example.csv') |
| tensor.print_data() |
| tensor.csv_to_tensor(position) |
| print(f"Input : {tensor.game_tensor[position]}") |
| print(f"Output : {tensor.prediction_tensor[position]}") |
| tensor.tensor_to_view(position) |
|
|