diff --git a/.gitignore b/.gitignore index 3507051..796fb1a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ scripts/wandb/* scripts/images/* +plr.egg-info/* +2024_home_work/.venv/* +.venv/* diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..cc1923a --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.8 diff --git a/main.py b/main.py new file mode 100644 index 0000000..7fe9cc8 --- /dev/null +++ b/main.py @@ -0,0 +1,6 @@ +def main(): + print("Hello from plr!") + + +if __name__ == "__main__": + main() diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..417c4f2 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,40 @@ +[project] +name = "plr" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.8" +license = { text = "MIT" } +dependencies = [ + "numpy", "torch", + "pytictac", + "pre-commit", + "ruff", + "wandb", + "matplotlib", + "notebook", +] +authors = [{ name = "Jonas Frey", email = "jonfrey@ethz.ch" }] +classifiers = [ + "Development Status :: 4 - Beta", + "License :: MIT", + "Operating System :: Linux 20.04", + "Programming Language :: Python :: 3.8", +] + +[tool.setuptools] +packages = ["plr"] + +[tool.black] +line-length = 120 +target-version = ['py38'] + +[tool.ruff] +line-length = 120 +target-version = "py38" +select = ["E", "F", "W"] # Enable error, flake8, and warnings +ignore = ["E741", "E501"] + +[tool.mypy] +python_version = "3.8" +strict = true diff --git a/scripts/01_regression.ipynb b/scripts/01_regression.ipynb index 67b0de2..eef0174 100644 --- a/scripts/01_regression.ipynb +++ b/scripts/01_regression.ipynb @@ -35,7 +35,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -49,14 +49,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Creating a dataset and understanding what we are working with. \n", "DATASET_SIZE: int = 1000\n", "\n", - "mode = \"input_high_dim\"\n", + "mode = \"linear\"\n", "\n", "if mode == \"linear\":\n", " INPUT_DIM: int = 1\n", @@ -79,9 +79,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "# Visualize the dataset\n", "def visualized(x, y, y_pred, title):\n", diff --git a/scripts/03_wandb.ipynb b/scripts/03_wandb.ipynb index d168498..756d333 100644 --- a/scripts/03_wandb.ipynb +++ b/scripts/03_wandb.ipynb @@ -10,7 +10,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -19,7 +19,7 @@ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from PIL import Image\n", - "import os" + "import os\n" ] }, { @@ -32,9 +32,178 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "Tracking run with wandb version 0.19.7" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Run data is saved locally in /home/jonfrey/git/plr-exercise/scripts/wandb/run-20250226_143428-2ywuwcna" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Syncing run rich-wave-6 to Weights & Biases (docs)
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " View project at https://wandb.ai/jonasfrey96/plr-exercise" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " View run at https://wandb.ai/jonasfrey96/plr-exercise/runs/2ywuwcna" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 1. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 0 that is less than the current step 2. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[33mWARNING\u001b[0m Tried to log to step 1 that is less than the current step 2. Steps must be monotonically increasing, so this data will be ignored. See https://wandb.me/define-metric to log data out of order.\n" + ] + } + ], "source": [ "# Initialize wandb Project\n", "wandb.init(project=\"plr-exercise\", config={\n", @@ -63,9 +232,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "# Generate random curves and log them to wandb\n", "x = np.linspace(0, 10, 100)\n", @@ -82,13 +264,17 @@ "plt.ylabel('Y-axis')\n", "\n", "# Save the plot as an image file\n", - "plt.savefig('random_curves.png')\n", + "plt.savefig('images/random_curves.png')\n", "\n", "# Log the plot image to wandb\n", - "wandb.log({\"random_curves\": wandb.Image('random_curves.png')})\n", + "wandb.log({\"random_curves\": wandb.Image('images/random_curves.png')})\n", "\n", "# Optionally, log the data points as well\n", - "wandb.log({\"x\": x, \"y1\": y1, \"y2\": y2})" + "step = 0\n", + "for _x, _y1, _y2 in zip(x, y1, y2):\n", + " \n", + " wandb.log({\"x\": _x, \"y1\": _y1, \"y2\": _y2}, step=step)\n", + " step += 1" ] }, { @@ -101,9 +287,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--2025-02-26 14:34:05-- https://images.unsplash.com/photo-1560807707-8cc77767d783\n", + "Resolving images.unsplash.com (images.unsplash.com)... 146.75.118.208, 2a04:4e42:8d::720\n", + "Connecting to images.unsplash.com (images.unsplash.com)|146.75.118.208|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 653029 (638K) [image/jpeg]\n", + "Saving to: ‘images/dog.jpg’\n", + "\n", + "images/dog.jpg 100%[===================>] 637.72K --.-KB/s in 0.03s \n", + "\n", + "2025-02-26 14:34:05 (20.7 MB/s) - ‘images/dog.jpg’ saved [653029/653029]\n", + "\n", + "--2025-02-26 14:34:05-- https://images.unsplash.com/photo-1518791841217-8f162f1e1131\n", + "Resolving images.unsplash.com (images.unsplash.com)... 146.75.118.208, 2a04:4e42:8d::720\n", + "Connecting to images.unsplash.com (images.unsplash.com)|146.75.118.208|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 1900801 (1.8M) [image/jpeg]\n", + "Saving to: ‘images/cat.jpg’\n", + "\n", + "images/cat.jpg 100%[===================>] 1.81M --.-KB/s in 0.06s \n", + "\n", + "2025-02-26 14:34:05 (32.4 MB/s) - ‘images/cat.jpg’ saved [1900801/1900801]\n", + "\n" + ] + } + ], "source": [ "# Upload Images of Dogs and Cats\n", "\n", @@ -125,9 +340,56 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "

Run history:


x▁▁▁▁▂▂▂▂▂▃▃▃▃▃▄▄▄▄▄▄▅▅▅▅▅▅▆▆▆▆▆▆▆▇▇▇▇▇▇█
y1▄▅▆▆▇▇▇▇▇█▇▇▇▇▆▅▄▃▃▃▂▁▁▁▁▂▃▂▃▃▅▆▆▇██▇▇▆▃
y2▇██▇▇▆▆▅▄▄▂▂▂▂▂▃▄▆▅▆▇▇▇█▇█▇▇▆▆▄▃▄▂▂▁▂▂▁▂

Run summary:


x10
y1-0.53406
y2-0.74042

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " View run rich-wave-6 at: https://wandb.ai/jonasfrey96/plr-exercise/runs/2ywuwcna
View project at: https://wandb.ai/jonasfrey96/plr-exercise
Synced 5 W&B file(s), 2 media file(s), 0 artifact file(s) and 0 other file(s)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Find logs at: ./wandb/run-20250226_143428-2ywuwcna/logs" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Create a new artifact\n", "artifact = wandb.Artifact('source_code', type='code')\n",