Row 99716

Row ID: 99716 | Dataset Entry | Axioma AXP Content Repository

Content Data

This page contains data entry 99716 from the Axioma AXP content repository. The structured data below represents the complete record for this entry.

import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') class ImprovedNN(nn.Module):     def __init__(self, input_size, hidden_size, output_size):         super(ImprovedNN, self).__init__()         self.fc1 = nn.Linear(input_size, hidden_size)         self.leaky_relu1 = nn.LeakyReLU()         self.fc2 = nn.Linear(hidden_size, hidden_size)         self.leaky_relu2 = nn.LeakyReLU()         self.fc3 = nn.Linear(hidden_size, output_size)         self._initialize_weights()     def forward(self, x):         x = self.fc1(x)         x = self.leaky_relu1(x)         x = self.fc2(x)         x = self.leaky_relu2(x)         x = self.fc3(x)         return x         def _initialize_weights(self):         for m in self.modules():             if isinstance(m, nn.Linear):                 nn.init.kaiming_normal_(m.weight)                 nn.init.zeros_(m.bias) def save_model(model, filepath):     torch.save(model.state_dict(), filepath) def load_model(model, filepath):     model.load_state_dict(torch.load(filepath))     model.eval() def train_model(model, train_loader, val_loader, epochs=1000, initial_lr=0.05, save_path='improved_nn.pth'):     model.to(device)     criterion = nn.MSELoss()     optimizer = optim.Adam(model.parameters(), lr=initial_lr)     best_val_loss = float('inf')     for epoch in range(epochs):         model.train()         epoch_loss = 0.0         for data, targets in train_loader:             data, targets = data.to(device), targets.to(device)             optimizer.zero_grad()             outputs = model(data)             loss = criterion(outputs, targets)             loss.backward()             optimizer.step()             epoch_loss += loss.item()                 epoch_loss /= len(train_loader)         if (epoch + 1) % 100 == 0 or epoch_loss < best_val_loss:             model.eval()             val_loss = 0.0             with torch.no_grad():                 for val_data, val_targets in val_loader:                     val_data, val_targets = val_data.to(device), val_targets.to(device)                     val_outputs = model(val_data)                     val_loss += criterion(val_outputs, val_targets).item()                         val_loss /= len(val_loader)             print(f'Epoch [{epoch+1}/{epochs}], Training Loss: {epoch_loss:.8f}, Validation Loss: {val_loss:.8f}')             if val_loss < best_val_loss:                 best_val_loss = val_loss             print('Training set predictions:')             with torch.no_grad():                 for data, targets in train_loader:                     data, targets = data.to(device), targets.to(device)                     train_predictions = model(data)                     for i in range(data.size(0)):                         input_str = ', '.join(f"{x:.2f}".rstrip('0').rstrip('.') for x in data[i].tolist())                         target_str = f"{targets[i].item():.4f}".rstrip('0').rstrip('.')                         prediction_str = f"{train_predictions[i].item():.4f}".rstrip('0').rstrip('.')                         loss_str = f"{criterion(train_predictions[i], targets[i]).item():.8f}"                         print(f'Input: [{input_str}], Target: {target_str}, Prediction: {prediction_str}, Loss: {loss_str}')                         print('Validation set predictions:')             for val_data, val_targets in val_loader:                 val_data, val_targets = val_data.to(device), val_targets.to(device)                 val_predictions = model(val_data)                 for i in range(val_data.size(0)):                     input_str = ', '.join(f"{x:.2f}".rstrip('0').rstrip('.') for x in val_data[i].tolist())                     target_str = f"{val_targets[i].item():.4f}".rstrip('0').rstrip('.')                     prediction_str = f"{val_predictions[i].item():.4f}".rstrip('0').rstrip('.')                     loss_str = f"{criterion(val_predictions[i], val_targets[i]).item():.8f}"                     print(f'Input: [{input_str}], Target: {target_str}, Prediction: {prediction_str}, Loss: {loss_str}')         save_model(model, save_path)     load_model(model, save_path)     return model if __name__ == "__main__":     input_size = 2     hidden_size = 2     output_size = 1     initial_lr = 0.05       epochs = 1000     model_filepath = 'improved_nn.pth'     batch_size = 16     x_train = torch.tensor([         [1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [-5.0, 6.0], [-2.56, 6.0], [4.0, 5.0],         [10.0, 11.0], [15.5, 16.5], [-20.0, -30.0], [25.75, 26.25], [-35.5, 40.5], [45.0, 46.0],         [50.0, -60.0], [-70.0, 80.0], [90.1, 100.2], [110.3, -120.4], [-130.5, 140.6], [150.7, 160.8],         [170.9, -180.1], [190.2, 200.3], [-210.4, 220.5], [230.6, -240.7], [-250.8, 260.9], [270.1, 280.2],         [290.3, -300.4], [-310.5, 320.6], [330.7, 340.8], [350.9, -360.1], [370.2, 380.3], [-390.4, 400.5],         [410.6, -420.7], [-430.8, 440.9], [450.1, 460.2], [470.3, -480.4], [-490.5, 500.6], [510.7, 520.8],         [530.9, -540.1], [550.2, 560.3], [-570.4, 580.5], [590.6, -600.7], [-610.8, 620.9], [630.1, 640.2],         [650.3, -660.4], [-670.5, 680.6], [690.7, 700.8], [710.9, -720.1], [730.2, 740.3], [-750.4, 760.5],         [770.6, -780.7], [-790.8, 800.9], [810.1, 820.2], [830.3, -840.4], [-850.5, 860.6], [870.7, 880.8]     ], dtype=torch.float32)     y_train = torch.tensor([         [3.0], [5.0], [7.0], [1.0], [3.44], [9.0],         [21.0], [32.0], [-50.0], [52.0], [5.0], [91.0],         [-10.0], [10.0], [190.3], [-10.1], [10.1], [311.5],         [-9.2], [390.5], [10.1], [-10.1], [10.1], [550.3],         [-10.1], [330.2], [671.5], [-10.1], [540.5], [10.1],         [-10.1], [871.5], [911.5], [-10.1], [110.1], [990.3],         [-10.1], [220.3], [5.0], [-10.1], [540.3], [1100.5],         [-10.1], [331.2], [450.2], [-10.1], [550.3], [620.5],         [-10.1], [770.5], [810.1], [-10.1], [220.3], [550.3]     ], dtype=torch.float32)     x_val = torch.tensor([         [5.0, 6.0], [6.0, 7.0], [8.5, 9.5], [-10.5, 11.5], [-12.5, 13.5], [14.5, 15.5],         [16.5, 17.5], [-18.5, 19.5], [20.5, 21.5], [-22.5, 23.5], [24.5, 25.5], [-26.5, 27.5]     ], dtype=torch.float32)     y_val = torch.tensor([         [11.0], [13.0], [18.0], [1.0], [1.0], [30.0],         [34.0], [1.0], [42.0], [1.0], [50.0], [1.0]     ], dtype=torch.float32)     train_dataset = TensorDataset(x_train, y_train)     train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)         val_dataset = TensorDataset(x_val, y_val)     val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False)     model = ImprovedNN(input_size, hidden_size, output_size).to(device)     try:         load_model(model, model_filepath)         print(f'Model loaded from {model_filepath}')     except (FileNotFoundError, RuntimeError):         print(f'No compatible saved model found at {model_filepath}. Training a new model.')     model = train_model(model, train_loader, val_loader, epochs=epochs, initial_lr=initial_lr, save_path=model_filepath)     save_model(model, model_filepath)     print(f'Model saved to {model_filepath}')     load_model(model, model_filepath)     print(f'Model loaded from {model_filepath}')     test_data = torch.tensor([[10.0, 20.0], [30.0, 40.0]], dtype=torch.float32)     test_data = test_data.to(device)     predictions = model(test_data)     predictions_formatted = [f"{p[0]:.4f}".rstrip('0').rstrip('.') for p in predictions.tolist()]     print(f'Predictions: {predictions_formatted}')

I'm using Visual Studio Code. Python 3.10.8.

You'd expect with this trainingdata that it can do it within 1k epochs. Even within less. But no, it can't even do it within 50k?!

I don't know what is wrong, so please help me! Im tired af.

Please do not reply with anything like "It's just addition, why do you need a neural network for that??" as this is just an experiment and I will teach it to do other things as well.

FieldValue
text import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader, TensorDataset device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') class ImprovedNN(nn.Module):     def __init__(self, input_size, hidden_size, output_size):         super(ImprovedNN, self).__init__()         self.fc1 = nn.Linear(input_size, hidden_size)         self.leaky_relu1 = nn.LeakyReLU()         self.fc2 = nn.Linear(hid…
label r/pytorch
dataType post
communityName r/pytorch
datetime 2024-05-25
username_encoded Z0FBQUFBQm5Lak14VlJySFJFa01JMkxyQTA3Y1J4eFJGWC1vcHA5UkduQmljUzZnTHNiWXZGYU5CZ3hXejYxRUZmWElNV3dSVDlxelMwbndnMGxndV85UGI0NlU2V29DU1E9PQ==
url_encoded Z0FBQUFBQm5LalBDaVNrN2R4OU9rNjQtdVRvelFhRHhUeGgyZkt5amZ2XzVtYXpEUWlCbm51ZkJpR1NidHpxTnBqMUZZMnFVYkZpSXktZUV3Q0E5Z3h0X3RBNklBcm8yNmNhc19SUEt3dUZQODlqalRMSm9KSGJqM0Z5TC1wbDAzN1FtTDVLMEhDRUM3MTd3b25UX0dudEZYLXRyM0xDSmVoLTVRRWgtWDhrb3NFeXpXNHZPLTNjcmtLUG51S01MaS05YnNXanRyaVhz

Raw Record

{
  "text": "    import torch\n    import torch.nn as nn\n    import torch.optim as optim\n    from torch.utils.data import DataLoader, TensorDataset\n    \n    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n    \n    class ImprovedNN(nn.Module):\n        def __init__(self, input_size, hidden_size, output_size):\n            super(ImprovedNN, self).__init__()\n            self.fc1 = nn.Linear(input_size, hidden_size)\n            self.leaky_relu1 = nn.LeakyReLU()\n            self.fc2 = nn.Linear(hidden_size, hidden_size)\n            self.leaky_relu2 = nn.LeakyReLU()\n            self.fc3 = nn.Linear(hidden_size, output_size)\n            self._initialize_weights()\n    \n        def forward(self, x):\n            x = self.fc1(x)\n            x = self.leaky_relu1(x)\n            x = self.fc2(x)\n            x = self.leaky_relu2(x)\n            x = self.fc3(x)\n            return x\n        \n        def _initialize_weights(self):\n            for m in self.modules():\n                if isinstance(m, nn.Linear):\n                    nn.init.kaiming_normal_(m.weight)\n                    nn.init.zeros_(m.bias)\n    \n    \n    def save_model(model, filepath):\n        torch.save(model.state_dict(), filepath)\n    \n    \n    def load_model(model, filepath):\n        model.load_state_dict(torch.load(filepath))\n        model.eval()\n    \n    \n    def train_model(model, train_loader, val_loader, epochs=1000, initial_lr=0.05, save_path='improved_nn.pth'):\n        model.to(device)\n        criterion = nn.MSELoss()\n        optimizer = optim.Adam(model.parameters(), lr=initial_lr)\n    \n        best_val_loss = float('inf')\n    \n        for epoch in range(epochs):\n            model.train()\n            epoch_loss = 0.0\n            for data, targets in train_loader:\n                data, targets = data.to(device), targets.to(device)\n                optimizer.zero_grad()\n                outputs = model(data)\n                loss = criterion(outputs, targets)\n                loss.backward()\n                optimizer.step()\n                epoch_loss += loss.item()\n            \n            epoch_loss /= len(train_loader)\n    \n            if (epoch + 1) % 100 == 0 or epoch_loss < best_val_loss:\n                model.eval()\n                val_loss = 0.0\n                with torch.no_grad():\n                    for val_data, val_targets in val_loader:\n                        val_data, val_targets = val_data.to(device), val_targets.to(device)\n                        val_outputs = model(val_data)\n                        val_loss += criterion(val_outputs, val_targets).item()\n                \n                val_loss /= len(val_loader)\n                print(f'Epoch [{epoch+1}/{epochs}], Training Loss: {epoch_loss:.8f}, Validation Loss: {val_loss:.8f}')\n    \n                if val_loss < best_val_loss:\n                    best_val_loss = val_loss\n    \n                print('Training set predictions:')\n                with torch.no_grad():\n                    for data, targets in train_loader:\n                        data, targets = data.to(device), targets.to(device)\n                        train_predictions = model(data)\n                        for i in range(data.size(0)):\n                            input_str = ', '.join(f\"{x:.2f}\".rstrip('0').rstrip('.') for x in data[i].tolist())\n                            target_str = f\"{targets[i].item():.4f}\".rstrip('0').rstrip('.')\n                            prediction_str = f\"{train_predictions[i].item():.4f}\".rstrip('0').rstrip('.')\n                            loss_str = f\"{criterion(train_predictions[i], targets[i]).item():.8f}\"\n                            print(f'Input: [{input_str}], Target: {target_str}, Prediction: {prediction_str}, Loss: {loss_str}')\n                \n                print('Validation set predictions:')\n                for val_data, val_targets in val_loader:\n                    val_data, val_targets = val_data.to(device), val_targets.to(device)\n                    val_predictions = model(val_data)\n                    for i in range(val_data.size(0)):\n                        input_str = ', '.join(f\"{x:.2f}\".rstrip('0').rstrip('.') for x in val_data[i].tolist())\n                        target_str = f\"{val_targets[i].item():.4f}\".rstrip('0').rstrip('.')\n                        prediction_str = f\"{val_predictions[i].item():.4f}\".rstrip('0').rstrip('.')\n                        loss_str = f\"{criterion(val_predictions[i], val_targets[i]).item():.8f}\"\n                        print(f'Input: [{input_str}], Target: {target_str}, Prediction: {prediction_str}, Loss: {loss_str}')\n        \n        save_model(model, save_path)\n        load_model(model, save_path)\n        return model\n    \n    \n    if __name__ == \"__main__\":\n        input_size = 2\n        hidden_size = 2\n        output_size = 1\n        initial_lr = 0.05  \n        epochs = 1000\n        model_filepath = 'improved_nn.pth'\n        batch_size = 16\n    \n        x_train = torch.tensor([\n            [1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [-5.0, 6.0], [-2.56, 6.0], [4.0, 5.0],\n            [10.0, 11.0], [15.5, 16.5], [-20.0, -30.0], [25.75, 26.25], [-35.5, 40.5], [45.0, 46.0],\n            [50.0, -60.0], [-70.0, 80.0], [90.1, 100.2], [110.3, -120.4], [-130.5, 140.6], [150.7, 160.8],\n            [170.9, -180.1], [190.2, 200.3], [-210.4, 220.5], [230.6, -240.7], [-250.8, 260.9], [270.1, 280.2],\n            [290.3, -300.4], [-310.5, 320.6], [330.7, 340.8], [350.9, -360.1], [370.2, 380.3], [-390.4, 400.5],\n            [410.6, -420.7], [-430.8, 440.9], [450.1, 460.2], [470.3, -480.4], [-490.5, 500.6], [510.7, 520.8],\n            [530.9, -540.1], [550.2, 560.3], [-570.4, 580.5], [590.6, -600.7], [-610.8, 620.9], [630.1, 640.2],\n            [650.3, -660.4], [-670.5, 680.6], [690.7, 700.8], [710.9, -720.1], [730.2, 740.3], [-750.4, 760.5],\n            [770.6, -780.7], [-790.8, 800.9], [810.1, 820.2], [830.3, -840.4], [-850.5, 860.6], [870.7, 880.8]\n        ], dtype=torch.float32)\n    \n        y_train = torch.tensor([\n            [3.0], [5.0], [7.0], [1.0], [3.44], [9.0], \n            [21.0], [32.0], [-50.0], [52.0], [5.0], [91.0],\n            [-10.0], [10.0], [190.3], [-10.1], [10.1], [311.5],\n            [-9.2], [390.5], [10.1], [-10.1], [10.1], [550.3],\n            [-10.1], [330.2], [671.5], [-10.1], [540.5], [10.1],\n            [-10.1], [871.5], [911.5], [-10.1], [110.1], [990.3],\n            [-10.1], [220.3], [5.0], [-10.1], [540.3], [1100.5],\n            [-10.1], [331.2], [450.2], [-10.1], [550.3], [620.5],\n            [-10.1], [770.5], [810.1], [-10.1], [220.3], [550.3]\n        ], dtype=torch.float32)\n    \n        x_val = torch.tensor([\n            [5.0, 6.0], [6.0, 7.0], [8.5, 9.5], [-10.5, 11.5], [-12.5, 13.5], [14.5, 15.5],\n            [16.5, 17.5], [-18.5, 19.5], [20.5, 21.5], [-22.5, 23.5], [24.5, 25.5], [-26.5, 27.5]\n        ], dtype=torch.float32)\n    \n        y_val = torch.tensor([\n            [11.0], [13.0], [18.0], [1.0], [1.0], [30.0],\n            [34.0], [1.0], [42.0], [1.0], [50.0], [1.0]\n        ], dtype=torch.float32)\n    \n        train_dataset = TensorDataset(x_train, y_train)\n        train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n        \n        val_dataset = TensorDataset(x_val, y_val)\n        val_loader = DataLoader(val_dataset, batch_size=batch_size, shuffle=False)\n    \n        model = ImprovedNN(input_size, hidden_size, output_size).to(device)\n    \n        try:\n            load_model(model, model_filepath)\n            print(f'Model loaded from {model_filepath}')\n        except (FileNotFoundError, RuntimeError):\n            print(f'No compatible saved model found at {model_filepath}. Training a new model.')\n    \n        model = train_model(model, train_loader, val_loader, epochs=epochs, initial_lr=initial_lr, save_path=model_filepath)\n    \n        save_model(model, model_filepath)\n        print(f'Model saved to {model_filepath}')\n    \n        load_model(model, model_filepath)\n        print(f'Model loaded from {model_filepath}')\n    \n        test_data = torch.tensor([[10.0, 20.0], [30.0, 40.0]], dtype=torch.float32)\n        test_data = test_data.to(device)\n        predictions = model(test_data)\n        predictions_formatted = [f\"{p[0]:.4f}\".rstrip('0').rstrip('.') for p in predictions.tolist()]\n        print(f'Predictions: {predictions_formatted}')\n    \n\nI'm using Visual Studio Code. Python 3.10.8.\n\nYou'd expect with this trainingdata that it can do it within 1k epochs. Even within less. But no, it can't even do it within 50k?!\n\nI don't know what is wrong, so please help me! Im tired af.\n\nPlease do not reply with anything like \"It's just addition, why do you need a neural network for that??\" as this is just an experiment and I will teach it to do other things as well.\n\n",
  "label": "r/pytorch",
  "dataType": "post",
  "communityName": "r/pytorch",
  "datetime": "2024-05-25",
  "username_encoded": "Z0FBQUFBQm5Lak14VlJySFJFa01JMkxyQTA3Y1J4eFJGWC1vcHA5UkduQmljUzZnTHNiWXZGYU5CZ3hXejYxRUZmWElNV3dSVDlxelMwbndnMGxndV85UGI0NlU2V29DU1E9PQ==",
  "url_encoded": "Z0FBQUFBQm5LalBDaVNrN2R4OU9rNjQtdVRvelFhRHhUeGgyZkt5amZ2XzVtYXpEUWlCbm51ZkJpR1NidHpxTnBqMUZZMnFVYkZpSXktZUV3Q0E5Z3h0X3RBNklBcm8yNmNhc19SUEt3dUZQODlqalRMSm9KSGJqM0Z5TC1wbDAzN1FtTDVLMEhDRUM3MTd3b25UX0dudEZYLXRyM0xDSmVoLTVRRWgtWDhrb3NFeXpXNHZPLTNjcmtLUG51S01MaS05YnNXanRyaVhz"
}

Entry Information