You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
240 lines
5.2 KiB
Plaintext
240 lines
5.2 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "standing-catch",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import torch\n",
|
|
"from torch.autograd.functional import jacobian\n",
|
|
"import itertools\n",
|
|
"import math"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "going-accident",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import combined as c"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "severe-employment",
|
|
"metadata": {},
|
|
"source": [
|
|
"So, this contains a bunch of initial tests of my abstractions. I eventually need to change these to assertions and package them."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "ranking-family",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#Instantiate some objects\n",
|
|
"pm = c.PhysicalModel(1.0,1e-6,0.01,2.0,1e-8)\n",
|
|
"s = c.States(torch.tensor([1.0,2,3]), torch.tensor([0.0]))\n",
|
|
"lp = c.LinearProfit(0,0.95,torch.tensor([1.0,0,0]), 5)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "premium-brisbane",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(tensor([-7.5676e+05, 2.8893e+05, 4.6783e+05, 1.5236e+00]),\n",
|
|
" <combined.States at 0x7f31f0146c10>)"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"c.single_transition(pm,lp,s,est_int)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "raised-worthy",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"tensor([-718920.5625, 274490.1562, 444444.6250])"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"minimand, iterated_partials, iterated_state = c.optimality(pm,lp,s,est_int)\n",
|
|
"minimand"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "horizontal-insight",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"tensor([-2285563., -2285557., -2285557.])"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"est_int2 = c.EstimandInterface(iterated_partials,torch.ones(3))\n",
|
|
"\n",
|
|
"minimand2, iterated_partials2, iterated_state2 = c.optimality(pm,lp,iterated_state,est_int2)\n",
|
|
"minimand2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "automatic-builder",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"tensor([-2405858.5000, -2405852.5000, -2405852.5000])"
|
|
]
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"est_int3 = c.EstimandInterface(iterated_partials2,torch.ones(3))\n",
|
|
"\n",
|
|
"minimand3, iterated_partials3, iterated_state3 = c.optimality(pm,lp,iterated_state2,est_int3)\n",
|
|
"minimand3"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "changing-mainland",
|
|
"metadata": {},
|
|
"source": [
|
|
"So, this succesfylly let me link the two. I'm going to move to another notebook, clean up, and start integrating the system"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "assumed-midwest",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"model = DoubleNetwork(input_size = 5, output_size=5, layers_size=15)\n",
|
|
"\n",
|
|
"data_in = torch.tensor([1.5,2,3,4,5])\n",
|
|
"\n",
|
|
"data_in\n",
|
|
"\n",
|
|
"target = torch.zeros(5)\n",
|
|
"\n",
|
|
"def loss_fn2(output,target):\n",
|
|
" return sum((output[1] +output[0] - target)**2)\n",
|
|
" #could add a simplicity assumption i.e. l1 on parameters.\n",
|
|
"\n",
|
|
"#Prep Optimizer\n",
|
|
"optimizer = torch.optim.SGD(model.parameters(),lr=0.01)\n",
|
|
"\n",
|
|
"for i in range(20):\n",
|
|
" #training loop\n",
|
|
" optimizer.zero_grad()\n",
|
|
"\n",
|
|
" output = model.forward(data_in)\n",
|
|
" output\n",
|
|
"\n",
|
|
" l = loss_fn2(output, target)\n",
|
|
"\n",
|
|
" l.backward()\n",
|
|
"\n",
|
|
" optimizer.step()\n",
|
|
"\n",
|
|
" print(\"\\n\",l)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "surprising-fundamentals",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "parliamentary-delta",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "emotional-castle",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "substantial-exhibit",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"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.8.8"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|