| 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) | |