Files
wassname f853c03f4b wip
2024-06-02 18:52:57 +08:00

81 lines
6.3 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "not enough values to unpack (expected 5, got 1)",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[4], line 18\u001b[0m\n\u001b[1;32m 15\u001b[0m video \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mrandom\u001b[38;5;241m.\u001b[39mrandint(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;241m255\u001b[39m, size\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m1\u001b[39m, T, C, H, W))\u001b[38;5;241m.\u001b[39mastype(np\u001b[38;5;241m.\u001b[39muint8)\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# value = np.clip(255 * value, 0, 255).astype(np.uint8)\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;66;03m# value = value.transpose(1, 4, 2, 0, 3).reshape((1, T, C, H, B * W))\u001b[39;00m\n\u001b[0;32m---> 18\u001b[0m \u001b[43mwriter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43madd_video\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m16\u001b[39;49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/media/wassname/SGIronWolf/projects5/worldmodels/dreamerv3-torch/.venv/lib/python3.9/site-packages/torch/utils/tensorboard/writer.py:821\u001b[0m, in \u001b[0;36mSummaryWriter.add_video\u001b[0;34m(self, tag, vid_tensor, global_step, fps, walltime)\u001b[0m\n\u001b[1;32m 805\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Add video data to summary.\u001b[39;00m\n\u001b[1;32m 806\u001b[0m \n\u001b[1;32m 807\u001b[0m \u001b[38;5;124;03mNote that this requires the ``moviepy`` package.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 817\u001b[0m \u001b[38;5;124;03m vid_tensor: :math:`(N, T, C, H, W)`. The values should lie in [0, 255] for type `uint8` or [0, 1] for type `float`.\u001b[39;00m\n\u001b[1;32m 818\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 819\u001b[0m torch\u001b[38;5;241m.\u001b[39m_C\u001b[38;5;241m.\u001b[39m_log_api_usage_once(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtensorboard.logging.add_video\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 820\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_file_writer()\u001b[38;5;241m.\u001b[39madd_summary(\n\u001b[0;32m--> 821\u001b[0m \u001b[43mvideo\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtag\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvid_tensor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfps\u001b[49m\u001b[43m)\u001b[49m, global_step, walltime\n\u001b[1;32m 822\u001b[0m )\n",
"File \u001b[0;32m/media/wassname/SGIronWolf/projects5/worldmodels/dreamerv3-torch/.venv/lib/python3.9/site-packages/torch/utils/tensorboard/summary.py:644\u001b[0m, in \u001b[0;36mvideo\u001b[0;34m(tag, tensor, fps)\u001b[0m\n\u001b[1;32m 642\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mvideo\u001b[39m(tag, tensor, fps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m):\n\u001b[1;32m 643\u001b[0m tensor \u001b[38;5;241m=\u001b[39m make_np(tensor)\n\u001b[0;32m--> 644\u001b[0m tensor \u001b[38;5;241m=\u001b[39m \u001b[43m_prepare_video\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtensor\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 645\u001b[0m \u001b[38;5;66;03m# If user passes in uint8, then we don't need to rescale by 255\u001b[39;00m\n\u001b[1;32m 646\u001b[0m scale_factor \u001b[38;5;241m=\u001b[39m _calc_scale_factor(tensor)\n",
"File \u001b[0;32m/media/wassname/SGIronWolf/projects5/worldmodels/dreamerv3-torch/.venv/lib/python3.9/site-packages/torch/utils/tensorboard/_utils.py:49\u001b[0m, in \u001b[0;36m_prepare_video\u001b[0;34m(V)\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_prepare_video\u001b[39m(V):\n\u001b[1;32m 40\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 41\u001b[0m \u001b[38;5;124;03m Convert a 5D tensor into 4D tensor.\u001b[39;00m\n\u001b[1;32m 42\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;124;03m e.g. Video with batchsize 16 will have a 4x4 grid.\u001b[39;00m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 49\u001b[0m b, t, c, h, w \u001b[38;5;241m=\u001b[39m V\u001b[38;5;241m.\u001b[39mshape\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m V\u001b[38;5;241m.\u001b[39mdtype \u001b[38;5;241m==\u001b[39m np\u001b[38;5;241m.\u001b[39muint8:\n\u001b[1;32m 52\u001b[0m V \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mfloat32(V) \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m255.0\u001b[39m\n",
"\u001b[0;31mValueError\u001b[0m: not enough values to unpack (expected 5, got 1)"
]
}
],
"source": [
"from torch.utils.tensorboard import SummaryWriter\n",
"import numpy as np\n",
"\n",
"value = 1\n",
"T = 2\n",
"C = 3\n",
"H = 32\n",
"H = 32\n",
"B = 4\n",
"W = 5\n",
"step = 6\n",
"name = 'name'\n",
"\n",
"writer = SummaryWriter()\n",
"video = np.random.randint(0, 255, size=(1, T, C, H, W)).astype(np.uint8)\n",
"# value = np.clip(255 * value, 0, 255).astype(np.uint8)\n",
"# value = value.transpose(1, 4, 2, 0, 3).reshape((1, T, C, H, B * W))\n",
"writer.add_video(name, value, step, 16)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.16"
}
},
"nbformat": 4,
"nbformat_minor": 2
}