Skip to content

Instantly share code, notes, and snippets.

@oxinabox
Last active June 30, 2016 05:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oxinabox/6b0781036c5daf4eac51d932725e146d to your computer and use it in GitHub Desktop.
Save oxinabox/6b0781036c5daf4eac51d932725e146d to your computer and use it in GitHub Desktop.
Some Experiments with representions for angles in neural nets, using Julia and Mocha
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"\"true\""
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ENV[\"MOCHA_CUDA_DEVICE\"]=1\n",
"ENV[\"MOCHA_USE_NATIVE_EXT\"] = \"false\"\n",
"ENV[\"MOCHA_USE_CUDA\"] = \"true\""
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Configuring Mocha...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: Method definition info(Any...) in module Base at util.jl:334 overwritten in module Logging at /home/uniwa/students2/students/20361362/linux/.julia/v0.4/Logging/src/Logging.jl:61.\n",
"WARNING: Method definition warn(Any...) in module Base at util.jl:364 overwritten in module Logging at /home/uniwa/students2/students/20361362/linux/.julia/v0.4/Logging/src/Logging.jl:61.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" * CUDA enabled [DEV=1] (MOCHA_USE_CUDA environment variable detected)\n",
" * Native Ext disabled by default\n",
"Mocha configured, continue loading module...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING: parseint(s) is deprecated, use parse(Int,s) instead.\n",
" in depwarn at deprecated.jl:73\n",
" in parseint at deprecated.jl:50\n",
" in parseEnvInt at /home/uniwa/students2/students/20361362/linux/.julia/v0.4/Mocha/src/config.jl:12\n",
" in include at ./boot.jl:261\n",
" in include_from_node1 at ./loading.jl:320\n",
" in include at ./boot.jl:261\n",
" in include_from_node1 at ./loading.jl:320\n",
" in require at ./loading.jl:259\n",
" in include_string at loading.jl:282\n",
" in execute_request_0x535c5df2 at /home/uniwa/students2/students/20361362/linux/.julia/v0.4/IJulia/src/execute_request.jl:183\n",
" in eventloop at /home/uniwa/students2/students/20361362/linux/.julia/v0.4/IJulia/src/IJulia.jl:143\n",
" in anonymous at task.jl:447\n",
"while loading /home/uniwa/students2/students/20361362/linux/.julia/v0.4/Mocha/src/config.jl, in expression starting on line 27\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"DefaultBackend = Mocha.GPUBackend\n"
]
}
],
"source": [
"using Mocha\n",
"using UnicodePlots"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"draw_line! (generic function with 2 methods)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function draw_line!(rise,run, out=zeros(Float64,(10,10)))\n",
" len = minimum(size(out))÷2-1\n",
" if abs(run)>abs(rise)\n",
" range = run>0 ? (0:1:len) : (0:-1:-len)\n",
" for x in range\n",
" y = -trunc(Int64,(rise/run)*x)\n",
" out[end÷2+y,end÷2+x]=1 #Julia is backwards for column first\n",
" end\n",
" else\n",
" range = rise>0 ? (0:1:len) : (0:-1:-len)\n",
" for y in range\n",
" x = -trunc(Int64,(run/rise)*y)\n",
" out[end÷2+y,end÷2+x]=1 #Julia is backwards for column first\n",
" end\n",
" end\n",
"\n",
" return out\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"show_results_summary (generic function with 1 method)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function show_results_summary(pred, actual)\n",
" errors = abs(pred.-actual)\n",
" mean_error = mean(errors)\n",
" @show mean_error\n",
" @show std(errors)\n",
" @show minimum(errors)\n",
" @show median(errors)\n",
" @show maximum(errors)\n",
" \n",
" accurancy= mean([ŷ==y for (ŷ,y) in zip(pred, actual)])\n",
" accurancy_todefault_epsilon= mean([ŷ≈y for (ŷ,y) in zip(pred, actual)])\n",
" accurancy_to_point001= mean([isapprox(ŷ,y, atol=0.001) for (ŷ,y) in zip(pred, actual)])\n",
" accurancy_to_point01= mean([isapprox(ŷ,y, atol=0.01) for (ŷ,y) in zip(pred, actual)])\n",
" accurancy_to_point1= mean([isapprox(ŷ,y, atol=0.1) for (ŷ,y) in zip(pred, actual)])\n",
" @show accurancy\n",
" @show accurancy_todefault_epsilon\n",
" @show accurancy_to_point001\n",
" @show accurancy_to_point01\n",
" @show accurancy_to_point1\n",
" nothing\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(-0.21413377f0,-3648505,16777216)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function random_angle_rise_run()\n",
" quadrents=[(1,1,0),(1,-1,π),(-1,-1,-π),(-1,1,0)]\n",
" quadrent=rand(quadrents)\n",
" angle = rand(Float32)*π/2\n",
" if angle==π/2\n",
" rise,run = (1,0)\n",
" else\n",
" rise= num(Rational(tan(angle)))\n",
" run = den(Rational(tan(angle)))\n",
" end\n",
" rise*=quadrent[1]\n",
" run*=quadrent[2]\n",
" angle=angle*quadrent[1]*quadrent[2]+quadrent[3]\n",
"\n",
" @assert(isapprox(angle,atan2(rise,run), atol=0.0001), \"$angle != $(atan2(rise,run))\")\n",
" angle,rise,run\n",
"end\n",
"\n",
"random_angle_rise_run()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"make_data (generic function with 1 method)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function make_data(n_cases, img_width, img_height)\n",
" X = Matrix{Float64}(img_width*img_height,n_cases)\n",
" Y_angles = Vector{Float64}(n_cases)\n",
" \n",
" for ii in 1:n_cases\n",
" angle,rise,run = random_angle_rise_run() \n",
" img = draw_line!(rise,run, zeros(Float64,(img_height,img_width)))\n",
" X[:,ii] = img[:]\n",
" Y_angles[ii]=angle\n",
" end\n",
" X,Y_angles'\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"decode_binned (generic function with 2 methods)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Define various encoders for angles\n",
"encode_scaled(Y_angles)=((Y_angles+π)/2π)\n",
"decode_scaled(Y_scaled)=(Y_scaled[:]*2π-π)'\n",
"\n",
"encode_cossin(Y_angles) = [cos(Y_angles); sin(Y_angles)]\n",
"decode_cossin(Y_cossin) = atan2(Y_cossin[2,:], Y_cossin[1,:])'\n",
"\n",
"function encode_binned(Y_angles,n_bins = 500)\n",
" Ys = encode_scaled(Y_angles)\n",
" ret = zeros(n_bins, length(Ys))\n",
" for (ii,y) in enumerate(Ys)\n",
" idx=1+round(Int64, y*(n_bins-1))\n",
" ret[idx,ii]=1\n",
" end\n",
" ret\n",
"end\n",
"\n",
"function decode_binned(Y_codes,n_bins = 500)\n",
" ret = Vector{Float64}(size(Y_codes,2))\n",
" for ii in 1:size(Y_codes,2)\n",
" idx = indmax(Y_codes[:,ii])[1]\n",
" ret[ii]=(idx.-1)./(n_bins-1)\n",
" end\n",
" decode_scaled(ret)\n",
"end\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"eval_angular_encoding (generic function with 1 method)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function eval_angular_encoding(encode, decode; img_width=101,img_height=101, cases=1000, max_iter=1000, softmax=false)\n",
"##Prep Data\n",
" xs,ys_angles = make_data(cases,img_width,img_height);\n",
" xs_test, ys_test_angles = make_data(cases,img_width,img_height); #Since it is syntetic data we can generate a testset as largeas the training set\n",
" \n",
" ys_code = encode(ys_angles)\n",
" ys_test_code = encode(ys_test_angles)\n",
" #@assert(softmax || decode(ys_code)≈ys_angles) #if it is softmax, then it is coded in a form that is not conging to decode perfect\n",
" #Train Net\n",
" @show size(ys_code)\n",
" \n",
" data_layer = MemoryDataLayer(batch_size=50, data=Array[xs, ys_code], tops=[:data, :label])\n",
" ip_layer = InnerProductLayer(name=\"ip\", output_dim=500, tops=[:ip], bottoms=[:data], neuron=Neurons.Sigmoid())\n",
" label_dim = size(data_layer.data[data_layer.tops.==:label][1],1)\n",
" @show label_dim\n",
" pred_layer = pred_layer = InnerProductLayer(name=\"pred\", output_dim=label_dim, tops=[:pred], bottoms=[:ip])\n",
" loss_layer = SquareLossLayer(name=\"sqloss\", bottoms=[:pred, :label])\n",
" \n",
" if softmax #overwrite it\n",
" #pred_layer = SoftmaxLayer(name=\"pred\",tops=[:pred], bottoms=[:ip])\n",
" #loss_layer = MultinomialLogisticLossLayer(bottoms=[:pred, :label])\n",
" loss_layer = SoftlabelSoftmaxLossLayer(name=\"smloss\", bottoms=[:pred, :label])\n",
" end\n",
" backend = DefaultBackend()\n",
" init(backend)\n",
"\n",
" net = Net(\"Training\", backend, [data_layer,ip_layer,pred_layer,loss_layer])\n",
" method = SGD()\n",
" params = make_solver_parameters(method, max_iter=max_iter, lr_policy=LRPolicy.Fixed(0.01), mom_policy=MomPolicy.Fixed(0.9))\n",
" solver = Solver(method, params)\n",
" add_coffee_break(solver, TrainingSummary(), every_n_iter=100)\n",
" solve(solver, net) #Train the net on the training data\n",
"\n",
" #Evaluate Net\n",
" println(\"-------Evaluating on Test-------\")\n",
" data_layer_test = MemoryDataLayer(batch_size=cases, data=Array[xs_test, ys_test_code], tops=[:data, :label])\n",
" test_net = Net(\"Test\", backend, [data_layer_test,ip_layer,pred_layer])\n",
"\n",
" forward_epoch(test_net) #Run the net on the test data \n",
" pred_code = to_array(test_net.output_blobs[:pred])\n",
" pred=decode(pred_code)\n",
" \n",
" \n",
" #shutdown(backend)\n",
" (pred,ys_test_angles)\n",
"end "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"size(ys_code) = (500,1000)\n",
"label_dim = 500\n",
"30-Jun 13:22:03:INFO:root:Constructing net Training on Mocha.CPUBackend...\n",
"30-Jun 13:22:03:INFO:root:Topological sorting 4 layers...\n",
"30-Jun 13:22:03:INFO:root:Setup layers...\n",
"30-Jun 13:22:03:INFO:root:Network constructed!\n",
"30-Jun 13:22:03:DEBUG:root:#DEBUG Checking network topology for back-propagation\n",
"30-Jun 13:22:04:DEBUG:root:Init network Training\n",
"30-Jun 13:22:04:DEBUG:root:Init parameter weight for layer ip\n",
"30-Jun 13:22:04:DEBUG:root:Init parameter bias for layer ip\n",
"30-Jun 13:22:04:DEBUG:root:Init parameter weight for layer pred\n",
"30-Jun 13:22:04:DEBUG:root:Init parameter bias for layer pred\n",
"30-Jun 13:22:04:DEBUG:root:#DEBUG Initializing coffee breaks\n",
"30-Jun 13:22:04:INFO:root: TRAIN iter=000000 obj_val=6.32109459\n",
"30-Jun 13:22:05:DEBUG:root:#DEBUG Entering solver loop\n",
"30-Jun 13:22:10:INFO:root: TRAIN iter=000100 obj_val=5.90896460\n",
"30-Jun 13:22:16:INFO:root: TRAIN iter=000200 obj_val=5.81646692\n",
"30-Jun 13:22:22:INFO:root: TRAIN iter=000300 obj_val=5.72751290\n",
"30-Jun 13:22:27:INFO:root: TRAIN iter=000400 obj_val=5.63788346\n",
"30-Jun 13:22:33:INFO:root: TRAIN iter=000500 obj_val=5.54463511\n",
"30-Jun 13:22:39:INFO:root: TRAIN iter=000600 obj_val=5.44539300\n",
"30-Jun 13:22:44:INFO:root: TRAIN iter=000700 obj_val=5.33807684\n",
"30-Jun 13:22:50:INFO:root: TRAIN iter=000800 obj_val=5.22093573\n",
"30-Jun 13:22:56:INFO:root: TRAIN iter=000900 obj_val=5.09273098\n",
"30-Jun 13:23:01:INFO:root: TRAIN iter=001000 obj_val=4.95288227\n",
"-------Evaluating on Test-------\n",
"30-Jun 13:23:01:INFO:root:Constructing net Test on Mocha.CPUBackend...\n",
"30-Jun 13:23:01:INFO:root:Topological sorting 3 layers...\n",
"30-Jun 13:23:01:INFO:root:Setup layers...\n",
"30-Jun 13:23:01:DEBUG:root:InnerProductLayer(ip): sharing weights and bias\n",
"30-Jun 13:23:01:DEBUG:root:InnerProductLayer(pred): sharing weights and bias\n",
"30-Jun 13:23:01:INFO:root:Network constructed!\n",
" 61.688237 seconds (381.43 M allocations: 12.276 GB, 2.01% gc time)\n"
]
},
{
"data": {
"text/plain": [
"(\n",
"1x1000 Array{Float64,2}:\n",
" -2.31055 1.51728 2.94013 -2.33573 … -0.875113 0.295902 0.0188873,\n",
"\n",
"1x1000 Array{Float64,2}:\n",
" -2.29266 1.54422 2.96279 -2.35595 … -0.867362 0.29379 -0.0191173)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"@time pred_binned, actual_binned = eval_angular_encoding(encode_binned, decode_binned; softmax=true)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" = 500 bins; 1,000 Iter \n",
"mean_error = 0.4711263341561127\n",
"std(errors) = 1.1881991421080138\n",
"minimum(errors) = 1.827016860245223e-6\n",
"median(errors) = 0.05121685329339731\n",
"maximum(errors) = 6.074969396458127\n",
"accurancy = 0.0\n",
"accurancy_todefault_epsilon = 0.0\n",
"accurancy_to_point001 = 0.021\n",
"accurancy_to_point01 = 0.219\n",
"accurancy_to_point1 = 0.596\n"
]
}
],
"source": [
"#Time CPU_with_OpenMP = 61.688237 seconds (381.43 M allocations: 12.276 GB, 2.01% gc time)\n",
"#Time CPU = 58.084438 seconds (381.30 M allocations: 12.270 GB, 2.02% gc time)\n",
"#Time GTX960 = 27.612926 seconds (825.41 k allocations: 4.685 GB, 1.43% gc time)\n",
"#Time Tesla K40 = 13.499364 seconds (9.65 M allocations: 5.052 GB, 2.34% gc time)\n",
"\n",
"println(\" = 500 bins; 1,000 Iter \")\n",
"show_results_summary(pred_binned, actual_binned)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"size(ys_code) = (1,1000)\n",
"label_dim = 1\n",
"30-Jun 13:23:40:INFO:root:Constructing net Training on Mocha.CPUBackend...\n",
"30-Jun 13:23:40:INFO:root:Topological sorting 4 layers...\n",
"30-Jun 13:23:40:INFO:root:Setup layers...\n",
"30-Jun 13:23:40:INFO:root:Network constructed!\n",
"30-Jun 13:23:40:DEBUG:root:#DEBUG Checking network topology for back-propagation\n",
"30-Jun 13:23:40:DEBUG:root:Init network Training\n",
"30-Jun 13:23:40:DEBUG:root:Init parameter weight for layer ip\n",
"30-Jun 13:23:40:DEBUG:root:Init parameter bias for layer ip\n",
"30-Jun 13:23:40:DEBUG:root:Init parameter weight for layer pred\n",
"30-Jun 13:23:40:DEBUG:root:Init parameter bias for layer pred\n",
"30-Jun 13:23:41:DEBUG:root:#DEBUG Initializing coffee breaks\n",
"30-Jun 13:23:41:INFO:root: TRAIN iter=000000 obj_val=0.05882566\n",
"30-Jun 13:23:41:DEBUG:root:#DEBUG Entering solver loop\n",
"30-Jun 13:23:44:INFO:root: TRAIN iter=000100 obj_val=0.04859836\n",
"30-Jun 13:23:47:INFO:root: TRAIN iter=000200 obj_val=0.01595876\n",
"30-Jun 13:23:50:INFO:root: TRAIN iter=000300 obj_val=0.00866565\n",
"30-Jun 13:23:53:INFO:root: TRAIN iter=000400 obj_val=0.00701754\n",
"30-Jun 13:23:56:INFO:root: TRAIN iter=000500 obj_val=0.00648604\n",
"30-Jun 13:23:59:INFO:root: TRAIN iter=000600 obj_val=0.00631583\n",
"30-Jun 13:24:02:INFO:root: TRAIN iter=000700 obj_val=0.00628356\n",
"30-Jun 13:24:05:INFO:root: TRAIN iter=000800 obj_val=0.00629137\n",
"30-Jun 13:24:08:INFO:root: TRAIN iter=000900 obj_val=0.00630042\n",
"30-Jun 13:24:10:INFO:root: TRAIN iter=001000 obj_val=0.00629985\n",
"-------Evaluating on Test-------\n",
"30-Jun 13:24:10:INFO:root:Constructing net Test on Mocha.CPUBackend...\n",
"30-Jun 13:24:10:INFO:root:Topological sorting 3 layers...\n",
"30-Jun 13:24:10:INFO:root:Setup layers...\n",
"30-Jun 13:24:10:DEBUG:root:InnerProductLayer(ip): sharing weights and bias\n",
"30-Jun 13:24:10:DEBUG:root:InnerProductLayer(pred): sharing weights and bias\n",
"30-Jun 13:24:10:INFO:root:Network constructed!\n",
" 30.487064 seconds (955.99 k allocations: 4.836 GB, 1.64% gc time)\n"
]
},
{
"data": {
"text/plain": [
"(\n",
"1x1000 Array{Float64,2}:\n",
" -1.23567 -0.496112 -1.96872 -1.93343 … -2.10888 1.87745 -0.87746,\n",
"\n",
"1x1000 Array{Float64,2}:\n",
" -1.3738 -0.618581 -2.2956 -1.82246 … -2.51013 1.80805 -1.02263)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"@time pred_scaled_1k, actual_scaled_1k = eval_angular_encoding(encode_scaled, decode_scaled)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" = scaled to 0-1; 1,000 iter \n",
"mean_error = 0.22252844859352533\n",
"std(errors) = 0.4878383766698216\n",
"minimum(errors) = 1.8213413039980253e-5\n",
"median(errors) = 0.12910339816685834\n",
"maximum(errors) = 4.928355124833342\n",
"accurancy = 0.0\n",
"accurancy_todefault_epsilon = 0.0\n",
"accurancy_to_point001 = 0.003\n",
"accurancy_to_point01 = 0.042\n",
"accurancy_to_point1 = 0.359\n"
]
}
],
"source": [
"#Time CPU = 37.183113 seconds (957.24 k allocations: 4.836 GB, 1.13% gc time)\n",
"#Time CPU_with_OpenMP = 30.487064 seconds (955.99 k allocations: 4.836 GB, 1.64% gc time)\n",
"#Time GTX960 = 26.231840 seconds (1.19 M allocations: 4.491 GB, 1.60% gc time)\n",
"#time Tesla K40 = 7.613501 seconds (1.06 M allocations: 4.486 GB, 4.11% gc time)\n",
"println(\" = scaled to 0-1; 1,000 iter \")\n",
"show_results_summary(pred_scaled_1k, actual_scaled_1k)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"size(ys_code) = (2,1000)\n",
"label_dim = 2\n",
"30-Jun 13:24:27:INFO:root:Constructing net Training on Mocha.CPUBackend...\n",
"30-Jun 13:24:27:INFO:root:Topological sorting 4 layers...\n",
"30-Jun 13:24:27:INFO:root:Setup layers...\n",
"30-Jun 13:24:27:INFO:root:Network constructed!\n",
"30-Jun 13:24:27:DEBUG:root:#DEBUG Checking network topology for back-propagation\n",
"30-Jun 13:24:27:DEBUG:root:Init network Training\n",
"30-Jun 13:24:27:DEBUG:root:Init parameter weight for layer ip\n",
"30-Jun 13:24:28:DEBUG:root:Init parameter bias for layer ip\n",
"30-Jun 13:24:28:DEBUG:root:Init parameter weight for layer pred\n",
"30-Jun 13:24:28:DEBUG:root:Init parameter bias for layer pred\n",
"30-Jun 13:24:28:DEBUG:root:#DEBUG Initializing coffee breaks\n",
"30-Jun 13:24:28:INFO:root: TRAIN iter=000000 obj_val=0.56657965\n",
"30-Jun 13:24:28:DEBUG:root:#DEBUG Entering solver loop\n",
"30-Jun 13:24:31:INFO:root: TRAIN iter=000100 obj_val=0.11403108\n",
"30-Jun 13:24:34:INFO:root: TRAIN iter=000200 obj_val=0.01661780\n",
"30-Jun 13:24:36:INFO:root: TRAIN iter=000300 obj_val=0.00841437\n",
"30-Jun 13:24:39:INFO:root: TRAIN iter=000400 obj_val=0.00383931\n",
"30-Jun 13:24:43:INFO:root: TRAIN iter=000500 obj_val=0.00159342\n",
"30-Jun 13:24:47:INFO:root: TRAIN iter=000600 obj_val=0.00071809\n",
"30-Jun 13:24:50:INFO:root: TRAIN iter=000700 obj_val=0.00040033\n",
"30-Jun 13:24:54:INFO:root: TRAIN iter=000800 obj_val=0.00027489\n",
"30-Jun 13:24:57:INFO:root: TRAIN iter=000900 obj_val=0.00021550\n",
"30-Jun 13:25:01:INFO:root: TRAIN iter=001000 obj_val=0.00018167\n",
"-------Evaluating on Test-------\n",
"30-Jun 13:25:01:INFO:root:Constructing net Test on Mocha.CPUBackend...\n",
"30-Jun 13:25:01:INFO:root:Topological sorting 3 layers...\n",
"30-Jun 13:25:01:INFO:root:Setup layers...\n",
"30-Jun 13:25:01:DEBUG:root:InnerProductLayer(ip): sharing weights and bias\n",
"30-Jun 13:25:01:DEBUG:root:InnerProductLayer(pred): sharing weights and bias\n",
"30-Jun 13:25:01:INFO:root:Network constructed!\n",
" 33.969061 seconds (890.57 k allocations: 4.834 GB, 1.55% gc time)\n"
]
},
{
"data": {
"text/plain": [
"(\n",
"1000x1 Array{Float64,2}:\n",
" 0.506251\n",
" -0.706846\n",
" -1.69701 \n",
" 1.69604 \n",
" -0.359154\n",
" 1.30174 \n",
" 2.69727 \n",
" 1.48109 \n",
" -1.21916 \n",
" -2.45308 \n",
" -2.06127 \n",
" 1.08498 \n",
" 0.281024\n",
" ⋮ \n",
" -1.97779 \n",
" 0.490637\n",
" -1.91589 \n",
" 2.60628 \n",
" 2.00374 \n",
" 0.998328\n",
" 1.49201 \n",
" 0.705631\n",
" -1.23383 \n",
" 1.74181 \n",
" 2.29165 \n",
" -3.13403 ,\n",
"\n",
"1x1000 Array{Float64,2}:\n",
" 0.52814 -0.770912 -1.76656 1.7068 … 1.79144 2.31057 -3.12977)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"@time pred_cossin_1k, actual_cossin_1k = eval_angular_encoding(encode_cossin, decode_cossin)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" = Sin/Cos; 1,000 iter \n",
"mean_error = 2.0999147180485234\n",
"std(errors) = 1.4859679090402775\n",
"minimum(errors) = 9.664462125025253e-7\n",
"median(errors) = 1.8440767072115745\n",
"maximum(errors) = 6.259330736645284\n",
"accurancy = 0.0\n",
"accurancy_todefault_epsilon = 0.0\n",
"accurancy_to_point001 = 0.037\n",
"accurancy_to_point01 = 0.371\n",
"accurancy_to_point1 = 0.989\n"
]
}
],
"source": [
"#Time CPU = 32.189825 seconds (890.98 k allocations: 4.834 GB, 1.35% gc time)\n",
"#Time CPU_with_OpenMP = 33.969061 seconds (890.57 k allocations: 4.834 GB, 1.55% gc time)\n",
"#Time GTX960 = 26.175433 seconds (830.20 k allocations: 4.475 GB, 1.49% gc time)\n",
"#Time Tesla K40 = 7.570600 seconds (964.25 k allocations: 4.482 GB, 3.57% gc time)\n",
"println(\" = Sin/Cos; 1,000 iter \")\n",
"show_results_summary(pred_cossin_1k, actual_cossin_1k)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"size(ys_code) = (1,1000)\n",
"label_dim = 1\n",
"30-Jun 13:25:18:INFO:root:Constructing net Training on Mocha.CPUBackend...\n",
"30-Jun 13:25:18:INFO:root:Topological sorting 4 layers...\n",
"30-Jun 13:25:18:INFO:root:Setup layers...\n",
"30-Jun 13:25:18:INFO:root:Network constructed!\n",
"30-Jun 13:25:18:DEBUG:root:#DEBUG Checking network topology for back-propagation\n",
"30-Jun 13:25:18:DEBUG:root:Init network Training\n",
"30-Jun 13:25:18:DEBUG:root:Init parameter weight for layer ip\n",
"30-Jun 13:25:18:DEBUG:root:Init parameter bias for layer ip\n",
"30-Jun 13:25:18:DEBUG:root:Init parameter weight for layer pred\n",
"30-Jun 13:25:18:DEBUG:root:Init parameter bias for layer pred\n",
"30-Jun 13:25:18:DEBUG:root:#DEBUG Initializing coffee breaks\n",
"30-Jun 13:25:18:INFO:root: TRAIN iter=000000 obj_val=0.22203671\n",
"30-Jun 13:25:18:DEBUG:root:#DEBUG Entering solver loop\n",
"30-Jun 13:25:21:INFO:root: TRAIN iter=000100 obj_val=0.02317332\n",
"30-Jun 13:25:25:INFO:root: TRAIN iter=000200 obj_val=0.00744551\n",
"30-Jun 13:25:28:INFO:root: TRAIN iter=000300 obj_val=0.00388474\n",
"30-Jun 13:25:32:INFO:root: TRAIN iter=000400 obj_val=0.00216964\n",
"30-Jun 13:25:35:INFO:root: TRAIN iter=000500 obj_val=0.00126046\n",
"30-Jun 13:25:39:INFO:root: TRAIN iter=000600 obj_val=0.00077038\n",
"30-Jun 13:25:42:INFO:root: TRAIN iter=000700 obj_val=0.00049547\n",
"30-Jun 13:25:46:INFO:root: TRAIN iter=000800 obj_val=0.00033653\n",
"30-Jun 13:25:49:INFO:root: TRAIN iter=000900 obj_val=0.00024135\n",
"30-Jun 13:25:53:INFO:root: TRAIN iter=001000 obj_val=0.00018180\n",
"30-Jun 13:25:56:INFO:root: TRAIN iter=001100 obj_val=0.00014282\n",
"30-Jun 13:25:59:INFO:root: TRAIN iter=001200 obj_val=0.00011630\n",
"30-Jun 13:26:03:INFO:root: TRAIN iter=001300 obj_val=0.00009770\n",
"30-Jun 13:26:07:INFO:root: TRAIN iter=001400 obj_val=0.00008438\n",
"30-Jun 13:26:10:INFO:root: TRAIN iter=001500 obj_val=0.00007466\n",
"30-Jun 13:26:13:INFO:root: TRAIN iter=001600 obj_val=0.00006747\n",
"30-Jun 13:26:17:INFO:root: TRAIN iter=001700 obj_val=0.00006207\n",
"30-Jun 13:26:21:INFO:root: TRAIN iter=001800 obj_val=0.00005793\n",
"30-Jun 13:26:25:INFO:root: TRAIN iter=001900 obj_val=0.00005473\n",
"30-Jun 13:26:28:INFO:root: TRAIN iter=002000 obj_val=0.00005220\n",
"30-Jun 13:26:32:INFO:root: TRAIN iter=002100 obj_val=0.00005018\n",
"30-Jun 13:26:36:INFO:root: TRAIN iter=002200 obj_val=0.00004854\n",
"30-Jun 13:26:40:INFO:root: TRAIN iter=002300 obj_val=0.00004719\n",
"30-Jun 13:26:43:INFO:root: TRAIN iter=002400 obj_val=0.00004608\n",
"30-Jun 13:26:47:INFO:root: TRAIN iter=002500 obj_val=0.00004514\n",
"30-Jun 13:26:50:INFO:root: TRAIN iter=002600 obj_val=0.00004436\n",
"30-Jun 13:26:53:INFO:root: TRAIN iter=002700 obj_val=0.00004368\n",
"30-Jun 13:26:56:INFO:root: TRAIN iter=002800 obj_val=0.00004311\n",
"30-Jun 13:26:59:INFO:root: TRAIN iter=002900 obj_val=0.00004261\n",
"30-Jun 13:27:02:INFO:root: TRAIN iter=003000 obj_val=0.00004217\n",
"30-Jun 13:27:05:INFO:root: TRAIN iter=003100 obj_val=0.00004179\n",
"30-Jun 13:27:08:INFO:root: TRAIN iter=003200 obj_val=0.00004145\n",
"30-Jun 13:27:12:INFO:root: TRAIN iter=003300 obj_val=0.00004115\n",
"30-Jun 13:27:15:INFO:root: TRAIN iter=003400 obj_val=0.00004087\n",
"30-Jun 13:27:18:INFO:root: TRAIN iter=003500 obj_val=0.00004063\n",
"30-Jun 13:27:21:INFO:root: TRAIN iter=003600 obj_val=0.00004041\n",
"30-Jun 13:27:24:INFO:root: TRAIN iter=003700 obj_val=0.00004021\n",
"30-Jun 13:27:26:INFO:root: TRAIN iter=003800 obj_val=0.00004002\n",
"30-Jun 13:27:29:INFO:root: TRAIN iter=003900 obj_val=0.00003986\n",
"30-Jun 13:27:32:INFO:root: TRAIN iter=004000 obj_val=0.00003970\n",
"30-Jun 13:27:34:INFO:root: TRAIN iter=004100 obj_val=0.00003956\n",
"30-Jun 13:27:37:INFO:root: TRAIN iter=004200 obj_val=0.00003943\n",
"30-Jun 13:27:40:INFO:root: TRAIN iter=004300 obj_val=0.00003932\n",
"30-Jun 13:27:43:INFO:root: TRAIN iter=004400 obj_val=0.00003921\n",
"30-Jun 13:27:45:INFO:root: TRAIN iter=004500 obj_val=0.00003911\n",
"30-Jun 13:27:48:INFO:root: TRAIN iter=004600 obj_val=0.00003902\n",
"30-Jun 13:27:51:INFO:root: TRAIN iter=004700 obj_val=0.00003894\n",
"30-Jun 13:27:53:INFO:root: TRAIN iter=004800 obj_val=0.00003887\n",
"30-Jun 13:27:56:INFO:root: TRAIN iter=004900 obj_val=0.00003880\n",
"30-Jun 13:27:58:INFO:root: TRAIN iter=005000 obj_val=0.00003874\n",
"30-Jun 13:28:01:INFO:root: TRAIN iter=005100 obj_val=0.00003868\n",
"30-Jun 13:28:04:INFO:root: TRAIN iter=005200 obj_val=0.00003863\n",
"30-Jun 13:28:08:INFO:root: TRAIN iter=005300 obj_val=0.00003858\n",
"30-Jun 13:28:11:INFO:root: TRAIN iter=005400 obj_val=0.00003854\n",
"30-Jun 13:28:15:INFO:root: TRAIN iter=005500 obj_val=0.00003850\n",
"30-Jun 13:28:19:INFO:root: TRAIN iter=005600 obj_val=0.00003846\n",
"30-Jun 13:28:23:INFO:root: TRAIN iter=005700 obj_val=0.00003843\n",
"30-Jun 13:28:26:INFO:root: TRAIN iter=005800 obj_val=0.00003840\n",
"30-Jun 13:28:30:INFO:root: TRAIN iter=005900 obj_val=0.00003838\n",
"30-Jun 13:28:33:INFO:root: TRAIN iter=006000 obj_val=0.00003835\n",
"30-Jun 13:28:37:INFO:root: TRAIN iter=006100 obj_val=0.00003833\n",
"30-Jun 13:28:40:INFO:root: TRAIN iter=006200 obj_val=0.00003831\n",
"30-Jun 13:28:44:INFO:root: TRAIN iter=006300 obj_val=0.00003830\n",
"30-Jun 13:28:48:INFO:root: TRAIN iter=006400 obj_val=0.00003828\n",
"30-Jun 13:28:52:INFO:root: TRAIN iter=006500 obj_val=0.00003827\n",
"30-Jun 13:28:56:INFO:root: TRAIN iter=006600 obj_val=0.00003825\n",
"30-Jun 13:29:00:INFO:root: TRAIN iter=006700 obj_val=0.00003824\n",
"30-Jun 13:29:03:INFO:root: TRAIN iter=006800 obj_val=0.00003823\n",
"30-Jun 13:29:06:INFO:root: TRAIN iter=006900 obj_val=0.00003822\n",
"30-Jun 13:29:10:INFO:root: TRAIN iter=007000 obj_val=0.00003821\n",
"30-Jun 13:29:13:INFO:root: TRAIN iter=007100 obj_val=0.00003820\n",
"30-Jun 13:29:17:INFO:root: TRAIN iter=007200 obj_val=0.00003820\n",
"30-Jun 13:29:21:INFO:root: TRAIN iter=007300 obj_val=0.00003819\n",
"30-Jun 13:29:25:INFO:root: TRAIN iter=007400 obj_val=0.00003818\n",
"30-Jun 13:29:28:INFO:root: TRAIN iter=007500 obj_val=0.00003817\n",
"30-Jun 13:29:32:INFO:root: TRAIN iter=007600 obj_val=0.00003817\n",
"30-Jun 13:29:35:INFO:root: TRAIN iter=007700 obj_val=0.00003816\n",
"30-Jun 13:29:39:INFO:root: TRAIN iter=007800 obj_val=0.00003816\n",
"30-Jun 13:29:43:INFO:root: TRAIN iter=007900 obj_val=0.00003815\n",
"30-Jun 13:29:46:INFO:root: TRAIN iter=008000 obj_val=0.00003814\n",
"30-Jun 13:29:49:INFO:root: TRAIN iter=008100 obj_val=0.00003814\n",
"30-Jun 13:29:53:INFO:root: TRAIN iter=008200 obj_val=0.00003813\n",
"30-Jun 13:29:57:INFO:root: TRAIN iter=008300 obj_val=0.00003812\n",
"30-Jun 13:30:00:INFO:root: TRAIN iter=008400 obj_val=0.00003812\n",
"30-Jun 13:30:04:INFO:root: TRAIN iter=008500 obj_val=0.00003811\n",
"30-Jun 13:30:07:INFO:root: TRAIN iter=008600 obj_val=0.00003810\n",
"30-Jun 13:30:11:INFO:root: TRAIN iter=008700 obj_val=0.00003810\n",
"30-Jun 13:30:13:INFO:root: TRAIN iter=008800 obj_val=0.00003809\n",
"30-Jun 13:30:16:INFO:root: TRAIN iter=008900 obj_val=0.00003808\n",
"30-Jun 13:30:19:INFO:root: TRAIN iter=009000 obj_val=0.00003807\n",
"30-Jun 13:30:22:INFO:root: TRAIN iter=009100 obj_val=0.00003806\n",
"30-Jun 13:30:25:INFO:root: TRAIN iter=009200 obj_val=0.00003805\n",
"30-Jun 13:30:28:INFO:root: TRAIN iter=009300 obj_val=0.00003804\n",
"30-Jun 13:30:30:INFO:root: TRAIN iter=009400 obj_val=0.00003803\n",
"30-Jun 13:30:33:INFO:root: TRAIN iter=009500 obj_val=0.00003802\n",
"30-Jun 13:30:36:INFO:root: TRAIN iter=009600 obj_val=0.00003801\n",
"30-Jun 13:30:40:INFO:root: TRAIN iter=009700 obj_val=0.00003800\n",
"30-Jun 13:30:42:INFO:root: TRAIN iter=009800 obj_val=0.00003799\n",
"30-Jun 13:30:45:INFO:root: TRAIN iter=009900 obj_val=0.00003798\n",
"30-Jun 13:30:49:INFO:root: TRAIN iter=010000 obj_val=0.00003797\n",
"-------Evaluating on Test-------\n",
"30-Jun 13:30:49:INFO:root:Constructing net Test on Mocha.CPUBackend...\n",
"30-Jun 13:30:49:INFO:root:Topological sorting 3 layers...\n",
"30-Jun 13:30:49:INFO:root:Setup layers...\n",
"30-Jun 13:30:49:DEBUG:root:InnerProductLayer(ip): sharing weights and bias\n",
"30-Jun 13:30:49:DEBUG:root:InnerProductLayer(pred): sharing weights and bias\n",
"30-Jun 13:30:49:INFO:root:Network constructed!\n",
"331.426570 seconds (3.40 M allocations: 39.112 GB, 0.64% gc time)\n"
]
},
{
"data": {
"text/plain": [
"(\n",
"1x1000 Array{Float64,2}:\n",
" -1.69483 1.29428 -1.69285 -0.393985 … -0.419886 0.855957 -0.673332,\n",
"\n",
"1x1000 Array{Float64,2}:\n",
" -1.73139 1.25579 -1.73625 -0.30835 … -0.485388 0.857431 -0.746863)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"@time pred_scaled_10k, actual_scaled_10k = eval_angular_encoding(encode_scaled, decode_scaled, max_iter=10_000)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" = scaled to 0-1; 10,000 iter \n",
"mean_error = 0.10858464291503868\n",
"std(errors) = 0.2807570441989076\n",
"minimum(errors) = 1.917062086853605e-6\n",
"median(errors) = 0.05629081429380989\n",
"maximum(errors) = 3.7358848230052435\n",
"accurancy = 0.0\n",
"accurancy_todefault_epsilon = 0.0\n",
"accurancy_to_point001 = 0.008\n",
"accurancy_to_point01 = 0.082\n",
"accurancy_to_point1 = 0.725\n"
]
}
],
"source": [
"#Time CPU = 340.415832 seconds (3.40 M allocations: 39.112 GB, 0.55% gc time)\n",
"#Time CPU_with_OpenMP = 331.426570 seconds (3.40 M allocations: 39.112 GB, 0.64% gc time)\n",
"#time GTX960 = 251.337496 seconds (4.26 M allocations: 38.784 GB, 1.01% gc time)\n",
"#time Tesla K40 = 67.574583 seconds (4.12 M allocations: 38.778 GB, 2.39% gc time)\n",
"println(\" = scaled to 0-1; 10,000 iter \")\n",
"show_results_summary(pred_scaled_10k, actual_scaled_10k)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"size(ys_code) = (2,1000)\n",
"label_dim = 2\n",
"30-Jun 13:32:43:INFO:root:Initializing CuDNN backend...\n",
"30-Jun 13:32:44:INFO:root:CuDNN backend initialized!\n",
"30-Jun 13:32:44:INFO:root:Constructing net Training on Mocha.GPUBackend...\n",
"30-Jun 13:32:44:INFO:root:Topological sorting 4 layers...\n",
"30-Jun 13:32:44:INFO:root:Setup layers...\n",
"30-Jun 13:32:45:INFO:root:Network constructed!\n",
"30-Jun 13:32:45:DEBUG:root:#DEBUG Checking network topology for back-propagation\n",
"30-Jun 13:32:45:DEBUG:root:Init network Training\n",
"30-Jun 13:32:45:DEBUG:root:Init parameter weight for layer ip\n",
"30-Jun 13:32:45:DEBUG:root:Init parameter bias for layer ip\n",
"30-Jun 13:32:45:DEBUG:root:Init parameter weight for layer pred\n",
"30-Jun 13:32:45:DEBUG:root:Init parameter bias for layer pred\n",
"30-Jun 13:32:45:DEBUG:root:#DEBUG Initializing coffee breaks\n",
"30-Jun 13:32:45:INFO:root: TRAIN iter=000000 obj_val=0.72353330\n",
"30-Jun 13:32:46:DEBUG:root:#DEBUG Entering solver loop\n",
"30-Jun 13:32:46:INFO:root: TRAIN iter=000100 obj_val=0.10527111\n",
"30-Jun 13:32:47:INFO:root: TRAIN iter=000200 obj_val=0.02965303\n",
"30-Jun 13:32:48:INFO:root: TRAIN iter=000300 obj_val=0.01149488\n",
"30-Jun 13:32:48:INFO:root: TRAIN iter=000400 obj_val=0.00391103\n",
"30-Jun 13:32:49:INFO:root: TRAIN iter=000500 obj_val=0.00132583\n",
"30-Jun 13:32:50:INFO:root: TRAIN iter=000600 obj_val=0.00060305\n",
"30-Jun 13:32:50:INFO:root: TRAIN iter=000700 obj_val=0.00042884\n",
"30-Jun 13:32:51:INFO:root: TRAIN iter=000800 obj_val=0.00036293\n",
"30-Jun 13:32:52:INFO:root: TRAIN iter=000900 obj_val=0.00030879\n",
"30-Jun 13:32:52:INFO:root: TRAIN iter=001000 obj_val=0.00025920\n",
"30-Jun 13:32:53:INFO:root: TRAIN iter=001100 obj_val=0.00021741\n",
"30-Jun 13:32:54:INFO:root: TRAIN iter=001200 obj_val=0.00018417\n",
"30-Jun 13:32:54:INFO:root: TRAIN iter=001300 obj_val=0.00015839\n",
"30-Jun 13:32:55:INFO:root: TRAIN iter=001400 obj_val=0.00013848\n",
"30-Jun 13:32:56:INFO:root: TRAIN iter=001500 obj_val=0.00012297\n",
"30-Jun 13:32:56:INFO:root: TRAIN iter=001600 obj_val=0.00011069\n",
"30-Jun 13:32:57:INFO:root: TRAIN iter=001700 obj_val=0.00010077\n",
"30-Jun 13:32:58:INFO:root: TRAIN iter=001800 obj_val=0.00009262\n",
"30-Jun 13:32:58:INFO:root: TRAIN iter=001900 obj_val=0.00008583\n",
"30-Jun 13:32:59:INFO:root: TRAIN iter=002000 obj_val=0.00008010\n",
"30-Jun 13:33:00:INFO:root: TRAIN iter=002100 obj_val=0.00007523\n",
"30-Jun 13:33:00:INFO:root: TRAIN iter=002200 obj_val=0.00007107\n",
"30-Jun 13:33:01:INFO:root: TRAIN iter=002300 obj_val=0.00006749\n",
"30-Jun 13:33:02:INFO:root: TRAIN iter=002400 obj_val=0.00006440\n",
"30-Jun 13:33:02:INFO:root: TRAIN iter=002500 obj_val=0.00006171\n",
"30-Jun 13:33:03:INFO:root: TRAIN iter=002600 obj_val=0.00005936\n",
"30-Jun 13:33:04:INFO:root: TRAIN iter=002700 obj_val=0.00005731\n",
"30-Jun 13:33:04:INFO:root: TRAIN iter=002800 obj_val=0.00005550\n",
"30-Jun 13:33:05:INFO:root: TRAIN iter=002900 obj_val=0.00005390\n",
"30-Jun 13:33:06:INFO:root: TRAIN iter=003000 obj_val=0.00005248\n",
"30-Jun 13:33:06:INFO:root: TRAIN iter=003100 obj_val=0.00005121\n",
"30-Jun 13:33:07:INFO:root: TRAIN iter=003200 obj_val=0.00005007\n",
"30-Jun 13:33:08:INFO:root: TRAIN iter=003300 obj_val=0.00004905\n",
"30-Jun 13:33:08:INFO:root: TRAIN iter=003400 obj_val=0.00004813\n",
"30-Jun 13:33:09:INFO:root: TRAIN iter=003500 obj_val=0.00004730\n",
"30-Jun 13:33:10:INFO:root: TRAIN iter=003600 obj_val=0.00004654\n",
"30-Jun 13:33:10:INFO:root: TRAIN iter=003700 obj_val=0.00004585\n",
"30-Jun 13:33:11:INFO:root: TRAIN iter=003800 obj_val=0.00004523\n",
"30-Jun 13:33:12:INFO:root: TRAIN iter=003900 obj_val=0.00004465\n",
"30-Jun 13:33:12:INFO:root: TRAIN iter=004000 obj_val=0.00004413\n",
"30-Jun 13:33:13:INFO:root: TRAIN iter=004100 obj_val=0.00004365\n",
"30-Jun 13:33:14:INFO:root: TRAIN iter=004200 obj_val=0.00004321\n",
"30-Jun 13:33:14:INFO:root: TRAIN iter=004300 obj_val=0.00004280\n",
"30-Jun 13:33:15:INFO:root: TRAIN iter=004400 obj_val=0.00004243\n",
"30-Jun 13:33:16:INFO:root: TRAIN iter=004500 obj_val=0.00004209\n",
"30-Jun 13:33:16:INFO:root: TRAIN iter=004600 obj_val=0.00004177\n",
"30-Jun 13:33:17:INFO:root: TRAIN iter=004700 obj_val=0.00004148\n",
"30-Jun 13:33:18:INFO:root: TRAIN iter=004800 obj_val=0.00004121\n",
"30-Jun 13:33:18:INFO:root: TRAIN iter=004900 obj_val=0.00004097\n",
"30-Jun 13:33:19:INFO:root: TRAIN iter=005000 obj_val=0.00004074\n",
"30-Jun 13:33:20:INFO:root: TRAIN iter=005100 obj_val=0.00004052\n",
"30-Jun 13:33:20:INFO:root: TRAIN iter=005200 obj_val=0.00004033\n",
"30-Jun 13:33:21:INFO:root: TRAIN iter=005300 obj_val=0.00004015\n",
"30-Jun 13:33:22:INFO:root: TRAIN iter=005400 obj_val=0.00003998\n",
"30-Jun 13:33:22:INFO:root: TRAIN iter=005500 obj_val=0.00003982\n",
"30-Jun 13:33:23:INFO:root: TRAIN iter=005600 obj_val=0.00003967\n",
"30-Jun 13:33:24:INFO:root: TRAIN iter=005700 obj_val=0.00003954\n",
"30-Jun 13:33:24:INFO:root: TRAIN iter=005800 obj_val=0.00003941\n",
"30-Jun 13:33:25:INFO:root: TRAIN iter=005900 obj_val=0.00003929\n",
"30-Jun 13:33:26:INFO:root: TRAIN iter=006000 obj_val=0.00003918\n",
"30-Jun 13:33:26:INFO:root: TRAIN iter=006100 obj_val=0.00003908\n",
"30-Jun 13:33:27:INFO:root: TRAIN iter=006200 obj_val=0.00003898\n",
"30-Jun 13:33:28:INFO:root: TRAIN iter=006300 obj_val=0.00003889\n",
"30-Jun 13:33:28:INFO:root: TRAIN iter=006400 obj_val=0.00003881\n",
"30-Jun 13:33:29:INFO:root: TRAIN iter=006500 obj_val=0.00003873\n",
"30-Jun 13:33:30:INFO:root: TRAIN iter=006600 obj_val=0.00003865\n",
"30-Jun 13:33:30:INFO:root: TRAIN iter=006700 obj_val=0.00003858\n",
"30-Jun 13:33:31:INFO:root: TRAIN iter=006800 obj_val=0.00003852\n",
"30-Jun 13:33:32:INFO:root: TRAIN iter=006900 obj_val=0.00003845\n",
"30-Jun 13:33:32:INFO:root: TRAIN iter=007000 obj_val=0.00003839\n",
"30-Jun 13:33:33:INFO:root: TRAIN iter=007100 obj_val=0.00003834\n",
"30-Jun 13:33:34:INFO:root: TRAIN iter=007200 obj_val=0.00003828\n",
"30-Jun 13:33:34:INFO:root: TRAIN iter=007300 obj_val=0.00003823\n",
"30-Jun 13:33:35:INFO:root: TRAIN iter=007400 obj_val=0.00003818\n",
"30-Jun 13:33:36:INFO:root: TRAIN iter=007500 obj_val=0.00003813\n",
"30-Jun 13:33:36:INFO:root: TRAIN iter=007600 obj_val=0.00003809\n",
"30-Jun 13:33:37:INFO:root: TRAIN iter=007700 obj_val=0.00003805\n",
"30-Jun 13:33:38:INFO:root: TRAIN iter=007800 obj_val=0.00003801\n",
"30-Jun 13:33:38:INFO:root: TRAIN iter=007900 obj_val=0.00003797\n",
"30-Jun 13:33:39:INFO:root: TRAIN iter=008000 obj_val=0.00003793\n",
"30-Jun 13:33:40:INFO:root: TRAIN iter=008100 obj_val=0.00003789\n",
"30-Jun 13:33:40:INFO:root: TRAIN iter=008200 obj_val=0.00003786\n",
"30-Jun 13:33:41:INFO:root: TRAIN iter=008300 obj_val=0.00003782\n",
"30-Jun 13:33:42:INFO:root: TRAIN iter=008400 obj_val=0.00003779\n",
"30-Jun 13:33:42:INFO:root: TRAIN iter=008500 obj_val=0.00003776\n",
"30-Jun 13:33:43:INFO:root: TRAIN iter=008600 obj_val=0.00003773\n",
"30-Jun 13:33:44:INFO:root: TRAIN iter=008700 obj_val=0.00003770\n",
"30-Jun 13:33:44:INFO:root: TRAIN iter=008800 obj_val=0.00003767\n",
"30-Jun 13:33:45:INFO:root: TRAIN iter=008900 obj_val=0.00003764\n",
"30-Jun 13:33:46:INFO:root: TRAIN iter=009000 obj_val=0.00003762\n",
"30-Jun 13:33:46:INFO:root: TRAIN iter=009100 obj_val=0.00003759\n",
"30-Jun 13:33:47:INFO:root: TRAIN iter=009200 obj_val=0.00003757\n",
"30-Jun 13:33:48:INFO:root: TRAIN iter=009300 obj_val=0.00003754\n",
"30-Jun 13:33:48:INFO:root: TRAIN iter=009400 obj_val=0.00003752\n",
"30-Jun 13:33:49:INFO:root: TRAIN iter=009500 obj_val=0.00003750\n",
"30-Jun 13:33:50:INFO:root: TRAIN iter=009600 obj_val=0.00003747\n",
"30-Jun 13:33:50:INFO:root: TRAIN iter=009700 obj_val=0.00003745\n",
"30-Jun 13:33:51:INFO:root: TRAIN iter=009800 obj_val=0.00003743\n",
"30-Jun 13:33:52:INFO:root: TRAIN iter=009900 obj_val=0.00003741\n",
"30-Jun 13:33:52:INFO:root: TRAIN iter=010000 obj_val=0.00003739\n",
"-------Evaluating on Test-------\n",
"30-Jun 13:33:53:INFO:root:Constructing net Test on Mocha.GPUBackend...\n",
"30-Jun 13:33:53:INFO:root:Topological sorting 3 layers...\n",
"30-Jun 13:33:53:INFO:root:Setup layers...\n",
"30-Jun 13:33:53:DEBUG:root:InnerProductLayer(ip): sharing weights and bias\n",
"30-Jun 13:33:53:DEBUG:root:InnerProductLayer(pred): sharing weights and bias\n",
"30-Jun 13:33:53:INFO:root:Network constructed!\n",
" 72.630029 seconds (13.26 M allocations: 39.162 GB, 2.45% gc time)\n"
]
},
{
"data": {
"text/plain": [
"(\n",
"1000x1 Array{Float64,2}:\n",
" -0.296786\n",
" -1.55355 \n",
" -1.39308 \n",
" -2.80827 \n",
" -0.580536\n",
" 0.719799\n",
" -0.273527\n",
" 2.24399 \n",
" -1.28489 \n",
" -0.990405\n",
" -0.513425\n",
" -1.80072 \n",
" -2.64894 \n",
" ⋮ \n",
" -0.397097\n",
" 3.12607 \n",
" 2.63425 \n",
" -0.156399\n",
" 1.34117 \n",
" 2.27049 \n",
" -2.76929 \n",
" 2.50708 \n",
" 0.855685\n",
" -2.3646 \n",
" -2.96012 \n",
" -2.75884 ,\n",
"\n",
"1x1000 Array{Float64,2}:\n",
" -0.304842 -1.54747 -1.37505 -2.8153 … -2.35986 -2.95677 -2.75746)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"@time pred_cossin_10k, actual_cossin_10k = eval_angular_encoding(encode_cossin, decode_cossin;max_iter=10_000)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" = Sin/Cos; 10,000 iter\n",
"mean_error = 2.1036656318235125\n",
"std(errors) = 1.4891605067844906\n",
"minimum(errors) = 5.8157226292543385e-6\n",
"median(errors) = 1.8491085946618226\n",
"maximum(errors) = 6.2704853961745375\n",
"accurancy = 0.0\n",
"accurancy_todefault_epsilon = 0.0\n",
"accurancy_to_point001 = 0.128\n",
"accurancy_to_point01 = 0.746\n",
"accurancy_to_point1 = 0.999\n"
]
}
],
"source": [
"#time Tesla K40 = 72.630029 seconds (13.26 M allocations: 39.162 GB, 2.45% gc time)\n",
"println(\" = Sin/Cos; 10,000 iter\")\n",
"show_results_summary(pred_cossin_10k, actual_cossin_10k)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 0.4.6",
"language": "julia",
"name": "julia-0.4"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "0.4.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment