ICOD/Training_IC_on_Demand.ipynb

354 lines
1.2 MiB
Plaintext
Raw Permalink Normal View History

{
"cells": [
{
"cell_type": "markdown",
2024-06-11 12:13:54 +02:00
"id": "2da7d8b4",
"metadata": {},
"source": [
"# Create ICs on Demand"
]
},
{
"cell_type": "code",
2024-06-10 13:53:47 +02:00
"execution_count": 1,
2024-06-11 12:13:54 +02:00
"id": "dd080e2e",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pylab as plt\n",
"\n",
"from models.multiresolution_flow_3d import *\n",
"from models.trainer import *\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
2024-06-11 12:13:54 +02:00
"id": "b1dd5f7e",
"metadata": {},
"source": [
"# Setup the model"
]
},
{
"cell_type": "code",
2024-06-10 13:53:47 +02:00
"execution_count": 2,
2024-06-11 12:13:54 +02:00
"id": "47ee081d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Trainer model: tm\n",
2024-06-10 13:53:47 +02:00
"load initial state\n"
]
}
],
"source": [
"nlevel=5\n",
"\n",
"shape = (2**nlevel,2**nlevel,2**nlevel)\n",
"\n",
"model = multi_scale_model(nlevel=nlevel)\n",
"\n",
"tm = trainer(model)"
]
},
{
"cell_type": "markdown",
2024-06-11 12:13:54 +02:00
"id": "7bcfec89",
"metadata": {},
"source": [
"# test training with white noise"
]
},
{
"cell_type": "code",
2024-06-10 13:53:47 +02:00
"execution_count": 6,
2024-06-11 12:13:54 +02:00
"id": "1b4e58ae",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train model...\n",
"Training done\n"
]
},
{
"data": {
"text/plain": [
"0"
]
},
2024-06-10 13:53:47 +02:00
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2024-06-10 13:53:47 +02:00
"for i in np.arange(1000):\n",
" x_train = np.random.normal(0,0.01,shape)+3.1415\n",
" tm.train_single(x_train, silent=True)\n",
"tm.transfer(silent=False)"
]
},
2024-06-10 13:53:47 +02:00
{
"cell_type": "code",
"execution_count": 7,
2024-06-11 12:13:54 +02:00
"id": "71c39acb",
2024-06-10 13:53:47 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.006170461447273722 1.006313544079366\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x = model.generate()\n",
"print(np.mean(x[nlevel].flatten()),np.std(x[nlevel].flatten()))\n",
"\n",
"\n",
"plt.hist(x[nlevel].flatten(),bins=100)\n",
"plt.show()"
]
},
2024-06-10 15:24:03 +02:00
{
"cell_type": "markdown",
2024-06-11 12:13:54 +02:00
"id": "bda66fa1",
2024-06-10 15:24:03 +02:00
"metadata": {},
"source": [
"# load BORG data"
]
},
{
"cell_type": "code",
"execution_count": 8,
2024-06-11 12:13:54 +02:00
"id": "e2405bbe",
2024-06-10 15:24:03 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(256, 256, 256)\n",
"Trainer model: tm_borg\n",
"load initial state\n"
]
}
],
"source": [
"nlevel=8\n",
"shape = (2**nlevel,2**nlevel,2**nlevel)\n",
"print(shape)\n",
"model = multi_scale_model(nlevel=nlevel)\n",
"\n",
"tm_borg = trainer(model)"
]
},
{
"cell_type": "code",
"execution_count": 9,
2024-06-11 12:13:54 +02:00
"id": "e2d6b3bc",
2024-06-10 15:24:03 +02:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train model...\n",
"Training done\n"
]
},
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tm_borg.transfer(silent=False)"
]
},
{
"cell_type": "markdown",
2024-06-11 12:13:54 +02:00
"id": "8e186b79",
2024-06-10 15:24:03 +02:00
"metadata": {},
"source": [
"## generate sample"
]
},
{
"cell_type": "code",
"execution_count": 10,
2024-06-11 12:13:54 +02:00
"id": "05e0cbbe",
2024-06-10 15:24:03 +02:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 576x432 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x = tm_borg.gen_model.generate()\n",
"\n",
"# Create the plot\n",
"plt.figure(figsize=(8, 6))\n",
"plt.imshow(x[nlevel][:,:,128], cmap='viridis', aspect='auto')\n",
"plt.colorbar(label='Intensity')\n",
"plt.title('Data Slice at Depth 128')\n",
"plt.xlabel('X-axis')\n",
"plt.ylabel('Y-axis')\n",
"\n",
"# Show the plot\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
2024-06-11 12:13:54 +02:00
"id": "cac4005d",
2024-06-10 15:24:03 +02:00
"metadata": {},
"source": [
"## get an ensemble"
]
},
2024-06-10 17:51:51 +02:00
{
"cell_type": "code",
"execution_count": 29,
2024-06-11 12:13:54 +02:00
"id": "de6eb5aa",
2024-06-10 15:24:03 +02:00
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
2024-06-10 17:51:51 +02:00
"100%|██████████████████████████████████████████████████████████████████████████████████████████████████████| 100/100 [10:15<00:00, 6.15s/it]\n"
2024-06-10 15:24:03 +02:00
]
2024-06-10 17:51:51 +02:00
}
],
"source": [
"from tqdm import tqdm\n",
"\n",
"# Assuming tm_borg.gen_model.generate() is a function that generates your data\n",
"# Initialize variables\n",
"sampnr = 100\n",
"\n",
"count =0\n",
"mean = 0\n",
"M2 = 0 \n",
"\n",
"for i in tqdm(range(sampnr)):\n",
" x = tm_borg.gen_model.generate()[nlevel] \n",
" count += 1\n",
" delta = x - mean\n",
" mean += delta / count\n",
" M2 += delta * (x - mean) # Simplified calculation of delta2\n",
" \n",
"variance = M2 / count\n",
"sample_variance = M2 / (count - 1)\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
2024-06-11 12:13:54 +02:00
"id": "8464f0d7",
2024-06-10 17:51:51 +02:00
"metadata": {},
"outputs": [
2024-06-10 15:24:03 +02:00
{
"data": {
2024-06-10 17:51:51 +02:00
"image/png": "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
2024-06-10 15:24:03 +02:00
"text/plain": [
2024-06-10 17:51:51 +02:00
"<Figure size 864x432 with 2 Axes>"
2024-06-10 15:24:03 +02:00
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
2024-06-10 17:51:51 +02:00
"fig, axes = plt.subplots(1, 2, figsize=(12, 6))\n",
2024-06-10 15:24:03 +02:00
"\n",
2024-06-10 17:51:51 +02:00
"# Plot ensemble mean\n",
"axes[0].imshow(mean[:,:,128], cmap='Spectral', aspect='auto')\n",
"axes[0].set_title('Ensemble Mean')\n",
"axes[0].set_xlabel('X-axis')\n",
"axes[0].set_ylabel('Y-axis')\n",
"axes[0].grid(False) # Turn off grid\n",
2024-06-10 15:24:03 +02:00
"\n",
2024-06-10 17:51:51 +02:00
"# Plot ensemble variance\n",
"im = axes[1].imshow(np.log10(variance[:,:,128]), cmap='viridis', aspect='auto')\n",
"axes[1].set_title('Ensemble Variance')\n",
"axes[1].set_xlabel('X-axis')\n",
"axes[1].set_ylabel('Y-axis')\n",
"axes[1].grid(False) # Turn off grid\n",
2024-06-10 15:24:03 +02:00
"\n",
2024-06-10 17:51:51 +02:00
"plt.tight_layout()\n",
"plt.show()"
2024-06-10 15:24:03 +02:00
]
},
{
"cell_type": "code",
"execution_count": null,
2024-06-11 12:13:54 +02:00
"id": "70af9a01",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}