Skip to content

Instantly share code, notes, and snippets.

@lucasmpavelski
Created October 18, 2017 11:35
Show Gist options
  • Save lucasmpavelski/4b8780f0c5502e114b469dca5a889d57 to your computer and use it in GitHub Desktop.
Save lucasmpavelski/4b8780f0c5502e114b469dca5a889d57 to your computer and use it in GitHub Desktop.
Testes RNAs para o flowshop - Parte I
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Testes RNAs para o flowshop - Parte I"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Os primeiros testes para resolução do problema flowshop com redes neurais artificiais (RNAs) utilizou-se se uma implementação simples, sem uso de bibliotecas especializadas. O objetivo foi entender o funcionamento das RNAs e seu algoritmo de treinamento, bem como exercitar os conceitos vistos em aula.\n",
"\n",
"Foram utilizadas a linguagem Python e a biblioteca de álgebra linear numpy. Esta implementação tomou como base o código disponível em [ML-Exercise4](https://github.com/jdwittenauer/ipython-notebooks/blob/master/notebooks/ml/ML-Exercise4.ipynb) de Wittenauer (2017)."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Pré-processamento dos dados\n",
"\n",
"Cada linha do arquivo `N_M_makespan.csv` possui uma instância do problema flowshop com N tarefas e M máquinas, juntamente com a sequência ótima e o makespan correspondente (não utilizado). Para cada linha, são geradas N exemplos de treinamento (um para cada saída da rede). Finalmente, as entradas e saídas são normalizadas para valores entre 0 e 1."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((70000, 30), (70000, 1))"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"no_jobs = 7\n",
"no_mach = 10\n",
"dt = pd.read_csv('data/%d_%d_makespan.csv' % (no_jobs, no_mach))\n",
"no_data = dt.shape[0]\n",
"no_samples = no_data * no_jobs\n",
"input_dim = no_mach * 3\n",
"output_dim = 1\n",
"\n",
"proc_times = np.reshape(dt.values[:,0:no_jobs*no_mach] / 100, (no_data, no_jobs, no_mach))\n",
"means = np.repeat(proc_times.mean(axis=1), no_jobs, axis=0)\n",
"stds = np.repeat(proc_times.std(axis=1), no_jobs, axis=0)\n",
"\n",
"input_data = np.empty((no_samples, input_dim))\n",
"input_data[:,0:no_mach] = proc_times.reshape((no_samples, no_mach))\n",
"input_data[:,no_mach:2*no_mach] = means\n",
"input_data[:,2*no_mach:3*no_mach] = stds\n",
"\n",
"output_data = dt.values[:,no_jobs*no_mach:(no_jobs*no_mach+no_jobs)].reshape((no_data * no_jobs, output_dim))\n",
"output_data = 0.1 + (0.8 / (no_jobs - 1)) * output_data\n",
"\n",
"X = input_data\n",
"y = output_data\n",
"\n",
"X.shape, y.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Definição do modelo\n",
"\n",
"A função sigmoid foi utilizada como ativação da camada oculta:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# função sigmoid e sua derivada\n",
"def sigmoid(z):\n",
" return 1 / (1 + np.exp(-z))\n",
"\n",
"def sigmoid_gradient(z):\n",
" return np.multiply(sigmoid(z), (1 - sigmoid(z)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A rede é constituída por três camadas: entrada, intermediária e saída. A função que realiza a passagem dos valores para frente é:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def forward_propagate(X, w1, w2):\n",
" m = X.shape[0]\n",
" a1 = np.insert(X, 0, values=np.ones(m), axis=1)\n",
" z2 = a1 * w1.T\n",
" a2 = np.insert(sigmoid(z2), 0, values=np.ones(m), axis=1)\n",
" z3 = a2 * w2.T\n",
" h = sigmoid(z3)\n",
" # retorna a saida de cada camada\n",
" return a1, z2, a2, z3, h"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A função custo abaixo realiza uma propagação e calcula o erro da rede com o MSE:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def cost(params, input_size, hidden_size, num_labels, X, y, learning_rate):\n",
" m = X.shape[0]\n",
" X = np.matrix(X)\n",
" y = np.matrix(y)\n",
" \n",
" theta1 = np.matrix(np.reshape(params[:hidden_size * (input_size + 1)], (hidden_size, (input_size + 1))))\n",
" theta2 = np.matrix(np.reshape(params[hidden_size * (input_size + 1):], (num_labels, (hidden_size + 1))))\n",
" \n",
" a1, z2, a2, z3, h = forward_propagate(X, theta1, theta2)\n",
" \n",
" J = 0\n",
" for i in range(m):\n",
" J += np.sum((h[i,:] - y[i,:]) ** 2)\n",
" J = J / m\n",
" \n",
" return J"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Inicialização da rede e parâmetros\n",
"\n",
"Os valores de pesos são inicializados entre -0.25 e 0.25, a taxa de aprendizado é 1 e o número de neurônos ocultos é 25:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((25, 31), (1, 26))"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"input_size = X.shape[1]\n",
"hidden_size = 25\n",
"num_labels = y.shape[1]\n",
"learning_rate = 1\n",
"\n",
"params = (np.random.random(size=hidden_size * (input_size + 1) + num_labels * (hidden_size + 1)) - 0.5) * 0.25\n",
"\n",
"m = X.shape[0]\n",
"X = np.matrix(X)\n",
"y = np.matrix(y)\n",
"\n",
"theta1 = np.matrix(np.reshape(params[:hidden_size * (input_size + 1)], (hidden_size, (input_size + 1))))\n",
"theta2 = np.matrix(np.reshape(params[hidden_size * (input_size + 1):], (num_labels, (hidden_size + 1))))\n",
"\n",
"theta1.shape, theta2.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Treinamento\n",
"\n",
"O algoritmo de retropropagação é implementado para calcular o gradiente de cada camada e retorná-los como um único vetor, juntamente com o erro de treinamento atual:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def backprop(params, input_size, hidden_size, num_labels, X, y, learning_rate):\n",
" m = X.shape[0]\n",
" X = np.matrix(X)\n",
" y = np.matrix(y)\n",
" # divide os parâmetros de cada camada (duas matrizes com os termos de bias)\n",
" theta1 = np.matrix(np.reshape(params[:hidden_size * (input_size + 1)], (hidden_size, (input_size + 1))))\n",
" theta2 = np.matrix(np.reshape(params[hidden_size * (input_size + 1):], (num_labels, (hidden_size + 1))))\n",
" # propaga os valores de entrada\n",
" a1, z2, a2, z3, h = forward_propagate(X, theta1, theta2)\n",
" # zera os valores dos gradientes\n",
" delta1 = np.zeros(theta1.shape) # (25, 401)\n",
" delta2 = np.zeros(theta2.shape) # (10, 26)\n",
" # calcula o erro atual\n",
" J = 0\n",
" for i in range(m):\n",
" J += np.sum((h[i,:] - y[i,:]) ** 2)\n",
" J = J / m\n",
" # retropropagação\n",
" for t in range(m):\n",
" a1t = a1[t,:]\n",
" z2t = z2[t,:]\n",
" a2t = a2[t,:]\n",
" ht = h[t,:]\n",
" yt = y[t,:]\n",
" d3t = ht - yt\n",
" z2t = np.insert(z2t, 0, values=np.ones(1))\n",
" d2t = np.multiply((theta2.T * d3t.T).T, sigmoid_gradient(z2t))\n",
" delta1 = delta1 + (d2t[:,1:]).T * a1t\n",
" delta2 = delta2 + d3t.T * a2t\n",
" delta1 = delta1 / m\n",
" delta2 = delta2 / m\n",
" # concatena os gradientes em um único vetor\n",
" grad = np.concatenate((np.ravel(delta1), np.ravel(delta2)))\n",
" return J, grad"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Em seguida otimiza os pesos iterativamente utilizando o algoritmo de Newton truncado, similar ao gradiente descenente, pois não usa os valores da Hessiana, apenas atualiza os parâmetros com base na derivada."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
" fun: 0.073997551017019075\n",
" jac: array([ 1.36012989e-03, 7.40231452e-04, 7.14410345e-04,\n",
" 6.72079539e-04, 7.25265221e-04, 6.95083140e-04,\n",
" 6.39161952e-04, 6.14160055e-04, 6.81900501e-04,\n",
" 6.71666925e-04, 6.19606480e-04, 6.79166426e-04,\n",
" 6.81624151e-04, 6.80469711e-04, 6.79031542e-04,\n",
" 6.77456610e-04, 6.77917554e-04, 6.80272875e-04,\n",
" 6.81151341e-04, 6.81239865e-04, 6.82765831e-04,\n",
" 3.52139996e-04, 3.52359740e-04, 3.52449342e-04,\n",
" 3.53106013e-04, 3.51634187e-04, 3.51205339e-04,\n",
" 3.50803295e-04, 3.52012843e-04, 3.51547555e-04,\n",
" 3.51797997e-04, 1.56537497e-03, 8.51987318e-04,\n",
" 8.21914894e-04, 7.73087030e-04, 8.34927631e-04,\n",
" 8.00251700e-04, 7.35412323e-04, 7.06805487e-04,\n",
" 7.84978362e-04, 7.73198085e-04, 7.12833476e-04,\n",
" 7.81691349e-04, 7.84461481e-04, 7.83056895e-04,\n",
" 7.81501507e-04, 7.79708489e-04, 7.80151135e-04,\n",
" 7.82904193e-04, 7.83956189e-04, 7.84076093e-04,\n",
" 7.85749264e-04, 4.05280111e-04, 4.05537950e-04,\n",
" 4.05626327e-04, 4.06382031e-04, 4.04677266e-04,\n",
" 4.04231098e-04, 4.03744070e-04, 4.05124801e-04,\n",
" 4.04581460e-04, 4.04888170e-04, -5.09749038e-04,\n",
" -2.77486614e-04, -2.67769835e-04, -2.51843944e-04,\n",
" -2.71837736e-04, -2.60513890e-04, -2.39593756e-04,\n",
" -2.30189878e-04, -2.55563063e-04, -2.51745395e-04,\n",
" -2.32230224e-04, -2.54548798e-04, -2.55466593e-04,\n",
" -2.55015345e-04, -2.54488817e-04, -2.53892287e-04,\n",
" -2.54075655e-04, -2.54946428e-04, -2.55276338e-04,\n",
" -2.55311321e-04, -2.55894029e-04, -1.31973725e-04,\n",
" -1.32055661e-04, -1.32090041e-04, -1.32339219e-04,\n",
" -1.31782428e-04, -1.31621997e-04, -1.31470927e-04,\n",
" -1.31929340e-04, -1.31750916e-04, -1.31844249e-04,\n",
" -9.25272257e-04, -5.03641401e-04, -4.86015412e-04,\n",
" -4.57174004e-04, -4.93439969e-04, -4.72838268e-04,\n",
" -4.34852377e-04, -4.17815774e-04, -4.63889087e-04,\n",
" -4.56909077e-04, -4.21564743e-04, -4.62037469e-04,\n",
" -4.63707551e-04, -4.62900755e-04, -4.61939208e-04,\n",
" -4.60858543e-04, -4.61181556e-04, -4.62769797e-04,\n",
" -4.63376646e-04, -4.63425010e-04, -4.64487356e-04,\n",
" -2.39560010e-04, -2.39703305e-04, -2.39763211e-04,\n",
" -2.40216153e-04, -2.39200615e-04, -2.38917283e-04,\n",
" -2.38643335e-04, -2.39469687e-04, -2.39145078e-04,\n",
" -2.39319367e-04, 6.03651290e-04, 3.28464871e-04,\n",
" 3.17095497e-04, 2.98228504e-04, 3.21923123e-04,\n",
" 3.08408614e-04, 2.83909733e-04, 2.72338376e-04,\n",
" 3.02789855e-04, 2.98077470e-04, 2.75034712e-04,\n",
" 3.01434391e-04, 3.02536123e-04, 3.02008534e-04,\n",
" 3.01394682e-04, 3.00643654e-04, 3.00924767e-04,\n",
" 3.01855593e-04, 3.02307841e-04, 3.02320083e-04,\n",
" 3.03030206e-04, 1.56290956e-04, 1.56382538e-04,\n",
" 1.56425510e-04, 1.56713073e-04, 1.56064230e-04,\n",
" 1.55871110e-04, 1.55690502e-04, 1.56227930e-04,\n",
" 1.56018046e-04, 1.56124239e-04, -1.04809502e-03,\n",
" -5.70704165e-04, -5.50647473e-04, -5.18001008e-04,\n",
" -5.59132252e-04, -5.34776595e-04, -4.91761722e-04,\n",
" -4.73040121e-04, -5.24421758e-04, -5.17815759e-04,\n",
" -4.77157942e-04, -5.23414940e-04, -5.25364179e-04,\n",
" -5.24338888e-04, -5.23160562e-04, -5.22015105e-04,\n",
" -5.22267800e-04, -5.24251930e-04, -5.24643536e-04,\n",
" -5.24981820e-04, -5.26105469e-04, -2.71386214e-04,\n",
" -2.71532170e-04, -2.71583553e-04, -2.72065658e-04,\n",
" -2.70923361e-04, -2.70674097e-04, -2.70354966e-04,\n",
" -2.71242137e-04, -2.70892352e-04, -2.71075561e-04,\n",
" 1.31853268e-03, 7.17674783e-04, 6.92606717e-04,\n",
" 6.51479326e-04, 7.03120688e-04, 6.73800516e-04,\n",
" 6.19689545e-04, 5.95465139e-04, 6.61079015e-04,\n",
" 6.51137437e-04, 6.00751573e-04, 6.58403037e-04,\n",
" 6.60807252e-04, 6.59640711e-04, 6.58264237e-04,\n",
" 6.56728027e-04, 6.57187917e-04, 6.59471793e-04,\n",
" 6.60326189e-04, 6.60396957e-04, 6.61905482e-04,\n",
" 3.41382469e-04, 3.41586429e-04, 3.41668950e-04,\n",
" 3.42305650e-04, 3.40867676e-04, 3.40463431e-04,\n",
" 3.40068146e-04, 3.41251958e-04, 3.40794372e-04,\n",
" 3.41035024e-04, 8.95886235e-04, 4.88365048e-04,\n",
" 4.70422371e-04, 4.43483464e-04, 4.77179054e-04,\n",
" 4.57044324e-04, 4.21542451e-04, 4.04131409e-04,\n",
" 4.48159463e-04, 4.41618417e-04, 4.08124772e-04,\n",
" 4.47337266e-04, 4.48945450e-04, 4.48423874e-04,\n",
" 4.47273622e-04, 4.46148665e-04, 4.46548529e-04,\n",
" 4.47911684e-04, 4.48419650e-04, 4.48499223e-04,\n",
" 4.49866120e-04, 2.31963413e-04, 2.32131436e-04,\n",
" 2.32153961e-04, 2.32612131e-04, 2.31568829e-04,\n",
" 2.31295297e-04, 2.31024270e-04, 2.31857759e-04,\n",
" 2.31524908e-04, 2.31695366e-04, -1.43785683e-03,\n",
" -7.82117459e-04, -7.56106636e-04, -7.10681375e-04,\n",
" -7.66534632e-04, -7.34082751e-04, -6.74997418e-04,\n",
" -6.49454623e-04, -7.20313664e-04, -7.10087176e-04,\n",
" -6.54871041e-04, -7.17887484e-04, -7.20755837e-04,\n",
" -7.19269809e-04, -7.17713096e-04, -7.16011779e-04,\n",
" -7.16527127e-04, -7.19233419e-04, -7.20060006e-04,\n",
" -7.20224217e-04, -7.21835879e-04, -3.72298764e-04,\n",
" -3.72468907e-04, -3.72600648e-04, -3.73262963e-04,\n",
" -3.71699950e-04, -3.71249649e-04, -3.70877196e-04,\n",
" -3.72122854e-04, -3.71634037e-04, -3.71908386e-04,\n",
" 3.85984954e-04, 2.10181555e-04, 2.02744740e-04,\n",
" 1.90672901e-04, 2.05753105e-04, 1.97383224e-04,\n",
" 1.81359547e-04, 1.74294223e-04, 1.93498384e-04,\n",
" 1.90505747e-04, 1.75804107e-04, 1.92754534e-04,\n",
" 1.93456831e-04, 1.93092307e-04, 1.92685968e-04,\n",
" 1.92258233e-04, 1.92390848e-04, 1.93059455e-04,\n",
" 1.93287892e-04, 1.93323704e-04, 1.93744458e-04,\n",
" 9.99348347e-05, 9.99933374e-05, 1.00022205e-04,\n",
" 1.00202598e-04, 9.97857669e-05, 9.96704199e-05,\n",
" 9.95468049e-05, 9.99005649e-05, 9.97613853e-05,\n",
" 9.98333521e-05, -9.29599458e-04, -5.05772130e-04,\n",
" -4.88257000e-04, -4.59286297e-04, -4.95700792e-04,\n",
" -4.75044550e-04, -4.36589495e-04, -4.19668536e-04,\n",
" -4.66202155e-04, -4.59025158e-04, -4.23447344e-04,\n",
" -4.64149647e-04, -4.65904053e-04, -4.65073674e-04,\n",
" -4.64090540e-04, -4.63035294e-04, -4.63255199e-04,\n",
" -4.64953289e-04, -4.65593846e-04, -4.65606023e-04,\n",
" -4.66655403e-04, -2.40675283e-04, -2.40816160e-04,\n",
" -2.40892631e-04, -2.41342282e-04, -2.40311880e-04,\n",
" -2.40046872e-04, -2.39760562e-04, -2.40601734e-04,\n",
" -2.40274427e-04, -2.40439316e-04, 1.13807027e-03,\n",
" 6.19814209e-04, 5.98404529e-04, 5.61786918e-04,\n",
" 6.07577187e-04, 5.81734974e-04, 5.33681295e-04,\n",
" 5.13008696e-04, 5.69720698e-04, 5.62068303e-04,\n",
" 5.17560287e-04, 5.68413524e-04, 5.70520758e-04,\n",
" 5.69096426e-04, 5.68175289e-04, 5.66794890e-04,\n",
" 5.66962887e-04, 5.68966025e-04, 5.69944147e-04,\n",
" 5.69865662e-04, 5.70995848e-04, 2.94683977e-04,\n",
" 2.94813236e-04, 2.94954889e-04, 2.95453452e-04,\n",
" 2.94228362e-04, 2.93866315e-04, 2.93521258e-04,\n",
" 2.94580937e-04, 2.94160903e-04, 2.94347283e-04,\n",
" 1.02635404e-03, 5.58024308e-04, 5.37174587e-04,\n",
" 5.06467103e-04, 5.46326684e-04, 5.22575781e-04,\n",
" 4.80799761e-04, 4.64996208e-04, 5.12482853e-04,\n",
" 5.05849754e-04, 4.66453377e-04, 5.12230668e-04,\n",
" 5.13819442e-04, 5.13503652e-04, 5.12256444e-04,\n",
" 5.11090037e-04, 5.11066250e-04, 5.13563418e-04,\n",
" 5.13664116e-04, 5.13618374e-04, 5.15050966e-04,\n",
" 2.65641904e-04, 2.65798446e-04, 2.65936947e-04,\n",
" 2.66394881e-04, 2.65354391e-04, 2.64990702e-04,\n",
" 2.64679159e-04, 2.65649528e-04, 2.65328626e-04,\n",
" 2.65409738e-04, 1.47181810e-03, 8.01568077e-04,\n",
" 7.72789413e-04, 7.27474059e-04, 7.85377724e-04,\n",
" 7.52616091e-04, 6.91181516e-04, 6.64553368e-04,\n",
" 7.38515458e-04, 7.26290458e-04, 6.70670348e-04,\n",
" 7.34957435e-04, 7.37538292e-04, 7.36353308e-04,\n",
" 7.34844551e-04, 7.33087341e-04, 7.33485024e-04,\n",
" 7.36145691e-04, 7.37237619e-04, 7.37054893e-04,\n",
" 7.38814589e-04, 3.81051462e-04, 3.81303906e-04,\n",
" 3.81391499e-04, 3.82102245e-04, 3.80492163e-04,\n",
" 3.80031183e-04, 3.79617028e-04, 3.80934430e-04,\n",
" 3.80409113e-04, 3.80679373e-04, 6.23043516e-05,\n",
" 3.38421969e-05, 3.26339077e-05, 3.07104743e-05,\n",
" 3.32610667e-05, 3.19019151e-05, 2.92891190e-05,\n",
" 2.80381723e-05, 3.11793467e-05, 3.07279479e-05,\n",
" 2.83803939e-05, 3.10917776e-05, 3.12031752e-05,\n",
" 3.11654230e-05, 3.11128721e-05, 3.10303643e-05,\n",
" 3.10523464e-05, 3.11401431e-05, 3.11801806e-05,\n",
" 3.11910117e-05, 3.12773931e-05, 1.61270521e-05,\n",
" 1.61419156e-05, 1.61477574e-05, 1.61785570e-05,\n",
" 1.61026536e-05, 1.60859062e-05, 1.60689211e-05,\n",
" 1.61294136e-05, 1.61009673e-05, 1.61125594e-05,\n",
" -1.55117802e-03, -8.44187707e-04, -8.14341792e-04,\n",
" -7.65776972e-04, -8.27663399e-04, -7.93037248e-04,\n",
" -7.28798686e-04, -6.99719891e-04, -7.78642564e-04,\n",
" -7.65041708e-04, -7.07056839e-04, -7.74449076e-04,\n",
" -7.77320406e-04, -7.76005288e-04, -7.74466282e-04,\n",
" -7.72743750e-04, -7.73264481e-04, -7.75720430e-04,\n",
" -7.76865142e-04, -7.76693188e-04, -7.78647766e-04,\n",
" -4.01570792e-04, -4.01846016e-04, -4.01944024e-04,\n",
" -4.02697893e-04, -4.00957426e-04, -4.00565508e-04,\n",
" -4.00078352e-04, -4.01438724e-04, -4.00921541e-04,\n",
" -4.01193165e-04, 1.60171714e-03, 8.72430428e-04,\n",
" 8.39357222e-04, 7.92911747e-04, 8.53323680e-04,\n",
" 8.18631703e-04, 7.51953435e-04, 7.24023054e-04,\n",
" 8.03902970e-04, 7.88886894e-04, 7.29063565e-04,\n",
" 7.99804278e-04, 8.02296364e-04, 8.01738827e-04,\n",
" 7.99432813e-04, 7.97494748e-04, 7.98009888e-04,\n",
" 8.01268320e-04, 8.02440621e-04, 8.01768024e-04,\n",
" 8.04012225e-04, 4.14754154e-04, 4.14911828e-04,\n",
" 4.15088512e-04, 4.15819172e-04, 4.14014179e-04,\n",
" 4.13582180e-04, 4.13107174e-04, 4.14599658e-04,\n",
" 4.13943944e-04, 4.14325617e-04, -1.54566509e-03,\n",
" -8.41494864e-04, -8.12175578e-04, -7.63499349e-04,\n",
" -8.24299471e-04, -7.89827095e-04, -7.26485142e-04,\n",
" -6.97935335e-04, -7.74639615e-04, -7.63008222e-04,\n",
" -7.03929024e-04, -7.71846554e-04, -7.74704137e-04,\n",
" -7.73180940e-04, -7.71706370e-04, -7.69882918e-04,\n",
" -7.70360774e-04, -7.73075653e-04, -7.74030056e-04,\n",
" -7.74136010e-04, -7.75905788e-04, -4.00176929e-04,\n",
" -4.00436476e-04, -4.00529451e-04, -4.01285560e-04,\n",
" -3.99569812e-04, -3.99108291e-04, -3.98648627e-04,\n",
" -4.00017309e-04, -3.99479890e-04, -3.99779040e-04,\n",
" -4.20715868e-04, -2.28763074e-04, -2.21014665e-04,\n",
" -2.07941424e-04, -2.24290024e-04, -2.15294261e-04,\n",
" -1.97703297e-04, -1.90117988e-04, -2.10994571e-04,\n",
" -2.07839964e-04, -1.91665071e-04, -2.10044052e-04,\n",
" -2.10859896e-04, -2.10444133e-04, -2.10032752e-04,\n",
" -2.09566929e-04, -2.09648201e-04, -2.10412053e-04,\n",
" -2.10705842e-04, -2.10748665e-04, -2.11226645e-04,\n",
" -1.08937119e-04, -1.08985175e-04, -1.09015038e-04,\n",
" -1.09218711e-04, -1.08762007e-04, -1.08628634e-04,\n",
" -1.08501534e-04, -1.08881710e-04, -1.08748689e-04,\n",
" -1.08806641e-04, 1.36128985e-03, 7.41250960e-04,\n",
" 7.14336468e-04, 6.71841430e-04, 7.26150273e-04,\n",
" 6.95072918e-04, 6.38960149e-04, 6.15512075e-04,\n",
" 6.82641611e-04, 6.72126178e-04, 6.20962319e-04,\n",
" 6.79696609e-04, 6.82148474e-04, 6.81002747e-04,\n",
" 6.79523885e-04, 6.77976595e-04, 6.78305392e-04,\n",
" 6.80863730e-04, 6.81665184e-04, 6.81730578e-04,\n",
" 6.83354072e-04, 3.52405838e-04, 3.52695248e-04,\n",
" 3.52714680e-04, 3.53405980e-04, 3.51946694e-04,\n",
" 3.51550182e-04, 3.51094850e-04, 3.52295963e-04,\n",
" 3.51880700e-04, 3.52113454e-04, 1.63962833e-03,\n",
" 8.91212692e-04, 8.62445494e-04, 8.08193769e-04,\n",
" 8.73764881e-04, 8.38353620e-04, 7.71074376e-04,\n",
" 7.39789934e-04, 8.20378328e-04, 8.08102520e-04,\n",
" 7.47597862e-04, 8.18751937e-04, 8.21870775e-04,\n",
" 8.19795075e-04, 8.18265361e-04, 8.16672943e-04,\n",
" 8.17439006e-04, 8.20155199e-04, 8.20641805e-04,\n",
" 8.20811441e-04, 8.23007789e-04, 4.24501040e-04,\n",
" 4.24783210e-04, 4.24895376e-04, 4.25608351e-04,\n",
" 4.23869340e-04, 4.23391039e-04, 4.22914877e-04,\n",
" 4.24423163e-04, 4.23821720e-04, 4.24018980e-04,\n",
" 2.21698799e-04, 1.20666622e-04, 1.16416322e-04,\n",
" 1.09467895e-04, 1.18188833e-04, 1.13340550e-04,\n",
" 1.04211293e-04, 1.00034428e-04, 1.11220151e-04,\n",
" 1.09382056e-04, 1.00972003e-04, 1.10713253e-04,\n",
" 1.11108905e-04, 1.10910007e-04, 1.10678921e-04,\n",
" 1.10421018e-04, 1.10513787e-04, 1.10866682e-04,\n",
" 1.11041813e-04, 1.11015755e-04, 1.11285226e-04,\n",
" 5.74020460e-05, 5.74354936e-05, 5.74482129e-05,\n",
" 5.75597651e-05, 5.73128647e-05, 5.72474424e-05,\n",
" 5.71792954e-05, 5.73761751e-05, 5.73002492e-05,\n",
" 5.73433022e-05, 2.35059142e-04, 1.28001222e-04,\n",
" 1.23523196e-04, 1.16082539e-04, 1.25330386e-04,\n",
" 1.20081222e-04, 1.10487612e-04, 1.06165338e-04,\n",
" 1.17871031e-04, 1.16111496e-04, 1.07114090e-04,\n",
" 1.17391339e-04, 1.17803002e-04, 1.17581865e-04,\n",
" 1.17345111e-04, 1.17075752e-04, 1.17159580e-04,\n",
" 1.17558679e-04, 1.17714447e-04, 1.17728876e-04,\n",
" 1.18007469e-04, 6.08608428e-05, 6.08928859e-05,\n",
" 6.09122987e-05, 6.10231940e-05, 6.07659797e-05,\n",
" 6.06956559e-05, 6.06280413e-05, 6.08346101e-05,\n",
" 6.07552532e-05, 6.07984923e-05, 6.88873938e-04,\n",
" 3.75070206e-04, 3.62025293e-04, 3.40502813e-04,\n",
" 3.67478536e-04, 3.51896307e-04, 3.23642876e-04,\n",
" 3.10991267e-04, 3.45433792e-04, 3.40165416e-04,\n",
" 3.13735683e-04, 3.44017015e-04, 3.45251196e-04,\n",
" 3.44624711e-04, 3.43951929e-04, 3.43100744e-04,\n",
" 3.43330124e-04, 3.44531664e-04, 3.44994887e-04,\n",
" 3.45025182e-04, 3.45785881e-04, 1.78355787e-04,\n",
" 1.78460096e-04, 1.78507161e-04, 1.78839253e-04,\n",
" 1.78087341e-04, 1.77877610e-04, 1.77666528e-04,\n",
" 1.78283265e-04, 1.78048845e-04, 1.78182700e-04,\n",
" 1.53952482e-03, 8.38037153e-04, 8.08705043e-04,\n",
" 7.60722286e-04, 8.21041229e-04, 7.86830098e-04,\n",
" 7.23553001e-04, 6.95219593e-04, 7.71781740e-04,\n",
" 7.60185633e-04, 7.01332571e-04, 7.68771456e-04,\n",
" 7.71561678e-04, 7.70199412e-04, 7.68612204e-04,\n",
" 7.66797929e-04, 7.67343843e-04, 7.69990697e-04,\n",
" 7.70983089e-04, 7.71066986e-04, 7.72808042e-04,\n",
" 3.98593572e-04, 3.98836967e-04, 3.98926125e-04,\n",
" 3.99681617e-04, 3.97995848e-04, 3.97526595e-04,\n",
" 3.97061578e-04, 3.98438538e-04, 3.97915258e-04,\n",
" 3.98200795e-04, -5.41881092e-02, -2.72938833e-02,\n",
" -2.79392729e-02, -2.71835811e-02, -2.70658978e-02,\n",
" -2.60564575e-02, -2.44692666e-02, -2.69548374e-02,\n",
" -2.37806848e-02, -2.86081389e-02, -2.81422306e-02,\n",
" -2.62819460e-02, -2.41361815e-02, -2.00096021e-02,\n",
" -2.80725078e-02, -2.22203629e-02, -2.53038541e-02,\n",
" -3.04936879e-02, -2.64653513e-02, -2.46374176e-02,\n",
" -2.50905579e-02, -2.99981909e-02, -2.60256315e-02,\n",
" -2.63605627e-02, -2.63631251e-02, -2.72048205e-02])\n",
" message: 'Max. number of function evaluations reached'\n",
" nfev: 2\n",
" nit: 0\n",
" status: 3\n",
" success: False\n",
" x: array([ 5.65166705e-02, 1.18393676e-01, 1.59034065e-02,\n",
" -4.64981583e-02, 9.34813530e-02, 4.34519847e-03,\n",
" 7.44721873e-02, 5.88207586e-02, 1.90336799e-02,\n",
" 2.83573047e-02, 7.64126691e-02, 6.31685426e-02,\n",
" 8.30853028e-02, -7.66376760e-02, -4.68072294e-02,\n",
" -9.26529989e-02, -9.65126567e-02, -9.00918104e-02,\n",
" -3.77167131e-02, -9.63214724e-02, 5.98698950e-02,\n",
" 1.24172585e-01, -1.36872603e-02, -5.72541333e-02,\n",
" -5.66549769e-02, -1.17267392e-01, -8.24728367e-02,\n",
" -8.89541401e-02, 3.83088194e-02, -8.93518960e-03,\n",
" -1.18929587e-01, -6.13053392e-02, 7.36809151e-03,\n",
" 8.11012961e-02, 8.50743607e-02, -4.48684987e-02,\n",
" -7.65114913e-02, 6.20161030e-02, 1.86443372e-02,\n",
" -4.30569699e-02, -2.19099557e-02, 8.23498750e-02,\n",
" -3.12883533e-02, -1.58297791e-02, 4.50004915e-02,\n",
" 7.33466152e-02, 1.53508286e-02, 4.53863345e-02,\n",
" 1.21069915e-03, -5.13529711e-03, -7.62962686e-02,\n",
" 2.71839703e-02, 1.87642857e-02, -1.00479328e-01,\n",
" 1.76615524e-02, 1.10175507e-01, 2.76686817e-04,\n",
" -1.13173525e-01, -2.30589931e-02, 5.73715301e-02,\n",
" 8.54485114e-02, 8.98591506e-03, -6.41520697e-02,\n",
" -1.18737085e-01, -8.59679243e-02, 7.30735837e-02,\n",
" 7.32177677e-02, -4.99515946e-02, -1.16397216e-01,\n",
" 1.80051877e-02, -1.53114629e-02, -1.04859342e-01,\n",
" 6.64712770e-02, 7.29011926e-02, 3.75577645e-02,\n",
" 5.90779276e-02, 4.01378461e-02, 3.45746454e-02,\n",
" -1.89904651e-02, -5.97785470e-03, 4.13247364e-03,\n",
" 7.83513048e-02, -7.88038938e-02, -3.67985239e-03,\n",
" 1.06843550e-01, 2.59613421e-02, -1.95464365e-02,\n",
" 8.71000807e-02, 7.05460600e-02, 3.80665471e-02,\n",
" -2.67441380e-02, 7.99853841e-02, 1.02748642e-02,\n",
" 5.05795466e-02, 8.26975745e-02, 7.11389638e-02,\n",
" -4.01667328e-02, -2.66973681e-03, -8.14203149e-02,\n",
" 2.96166408e-02, -9.94893539e-02, 5.52146842e-02,\n",
" -1.18244964e-01, 4.46864999e-02, 1.07895338e-02,\n",
" -5.18854010e-02, -3.05111925e-02, 9.68149741e-02,\n",
" 1.20554025e-01, -1.56639488e-02, -3.10415360e-02,\n",
" -1.93038586e-02, 7.31628839e-02, -2.69968749e-02,\n",
" -3.79132488e-02, -5.98148916e-02, -9.79801532e-02,\n",
" 1.20874289e-01, -5.93539819e-02, -9.30449599e-02,\n",
" -6.31178825e-02, 3.69620334e-02, -2.62456882e-03,\n",
" -1.05593124e-01, -5.03500553e-02, -7.65112474e-02,\n",
" 1.87222094e-02, -2.54942673e-02, -4.71905753e-03,\n",
" -4.70671342e-02, 1.04808531e-01, -1.17570152e-01,\n",
" 8.48030946e-02, -4.07450090e-03, 7.03526530e-03,\n",
" 8.23614756e-02, 5.64918566e-02, 6.05621863e-02,\n",
" 1.06892317e-01, -2.34243306e-02, 8.19149400e-02,\n",
" -9.92066235e-02, -8.15868384e-02, -7.95483151e-02,\n",
" -5.01680747e-02, 3.12030712e-02, -6.09147453e-02,\n",
" 1.42810872e-02, -1.29426271e-02, 1.23776370e-01,\n",
" 3.05340296e-02, -4.82038651e-02, -7.84367062e-03,\n",
" -4.40467850e-02, -1.10931635e-01, -1.02136592e-01,\n",
" 3.35483161e-02, 1.36067233e-03, 1.55970075e-02,\n",
" 5.07801283e-02, -1.16099859e-01, -1.01846940e-01,\n",
" -5.43791049e-02, -1.06836794e-01, 1.57679434e-02,\n",
" -5.64277462e-02, 4.01120628e-03, 8.02849011e-02,\n",
" -3.62992210e-03, -1.16644166e-01, 9.38962353e-02,\n",
" 8.16134277e-03, 1.10697825e-01, -1.04875234e-01,\n",
" -4.76236538e-03, 3.97370629e-02, 1.06483814e-01,\n",
" 6.37938619e-02, -4.52454131e-02, -1.23284765e-01,\n",
" -7.55104618e-02, 1.05577149e-01, 8.42270509e-02,\n",
" -5.66936135e-02, 1.84843862e-03, -4.64488565e-02,\n",
" -8.36359783e-02, -1.31925081e-02, 6.78855022e-02,\n",
" -7.57292956e-03, -9.01536041e-02, -7.64900997e-02,\n",
" 4.85960251e-02, 8.99775986e-02, 3.60729692e-02,\n",
" 1.11574215e-02, 7.33568565e-02, -8.82226878e-02,\n",
" 6.72197611e-02, -1.87247769e-02, -5.24613779e-02,\n",
" 6.46756623e-02, -2.68883527e-02, 8.81525032e-02,\n",
" 6.77436199e-02, 2.52160368e-02, -2.74813894e-02,\n",
" 7.16302286e-02, 7.19570727e-02, -1.08894937e-01,\n",
" -5.14861247e-02, -9.75816854e-02, -4.79020356e-02,\n",
" -5.22316184e-02, 6.58744287e-02, -8.01059028e-03,\n",
" 2.33774995e-02, -3.94377594e-02, 1.00986373e-01,\n",
" -2.06035404e-02, 8.28788746e-02, -8.73167958e-02,\n",
" -9.81695873e-02, 5.14483053e-02, -4.14499051e-02,\n",
" -1.01019054e-01, -8.09254459e-02, -2.44196658e-02,\n",
" -1.09163988e-01, -2.48046118e-02, 7.39208070e-02,\n",
" 1.00343552e-01, 5.11495804e-02, -6.30551518e-02,\n",
" -9.90546889e-02, -6.64491743e-02, -7.96042071e-02,\n",
" 1.16870541e-01, 4.55194490e-02, 1.00506803e-01,\n",
" 2.49588250e-02, 7.40945415e-02, -1.09874552e-01,\n",
" -5.63748927e-02, -1.07886619e-01, -1.56435890e-02,\n",
" -9.31656141e-02, -5.24373375e-02, -2.25001767e-02,\n",
" 8.18394459e-02, -1.21425627e-01, -5.09288821e-02,\n",
" 1.51210107e-02, 9.13435500e-02, 9.82359606e-02,\n",
" -4.82458446e-03, 9.57491340e-02, 1.17850049e-02,\n",
" 5.54067396e-02, 4.09925052e-02, -5.41499785e-02,\n",
" 9.30391269e-02, 1.15701394e-01, 6.82268006e-02,\n",
" 3.83627867e-02, -9.66733306e-02, -7.28100766e-02,\n",
" -6.88592375e-02, -1.05788376e-01, -1.19337058e-01,\n",
" 6.58847718e-02, -2.61640788e-02, 7.51682468e-02,\n",
" 7.63533524e-02, 1.22716991e-01, -1.14999796e-01,\n",
" 1.54246060e-02, 2.67338390e-02, -3.39250589e-02,\n",
" 3.29901217e-02, -8.52100094e-02, 7.93921399e-03,\n",
" 4.56147475e-02, 8.48562762e-02, -1.15838081e-01,\n",
" 5.70919125e-02, 3.00994834e-02, 6.34848432e-03,\n",
" 1.03641704e-01, 4.61543405e-02, -9.83556551e-03,\n",
" -8.95753525e-02, 1.44886981e-02, 2.52888348e-02,\n",
" 5.93875345e-02, -7.98539516e-02, -7.37234838e-02,\n",
" 4.76931457e-02, -1.11878399e-01, 8.69105342e-02,\n",
" 3.21184473e-02, 7.18275766e-02, -4.90966497e-02,\n",
" 1.12374830e-01, -7.70413966e-02, -1.18050061e-01,\n",
" 9.25673025e-02, -5.63656077e-02, 3.58796865e-02,\n",
" 6.30322736e-02, -1.12092039e-01, -9.09552896e-02,\n",
" -2.00078157e-02, -1.91220344e-02, -1.34185096e-02,\n",
" -1.70743244e-02, -1.04779989e-01, -6.58404925e-02,\n",
" 4.06562223e-02, -2.57796897e-02, -4.80793966e-02,\n",
" -5.82135366e-02, 1.17761843e-01, 5.97710202e-02,\n",
" 3.56875364e-03, 1.13943342e-01, -1.13211144e-01,\n",
" 1.21689186e-01, 1.07201040e-01, 4.05497634e-02,\n",
" 2.22329774e-02, 5.89476127e-03, -1.08163694e-01,\n",
" 8.33948914e-02, 3.33529172e-02, -1.15250333e-01,\n",
" 8.67043677e-02, -4.67282411e-02, 1.07859040e-01,\n",
" 5.51873641e-02, -1.47855956e-02, 2.80795830e-02,\n",
" 3.49517619e-02, 5.85206844e-02, -4.52447042e-02,\n",
" 8.83677055e-02, 2.88952172e-02, -1.09462436e-01,\n",
" -1.02177066e-01, -1.00813669e-01, -4.93549819e-04,\n",
" -8.91706670e-02, 3.55074771e-02, 5.59928887e-02,\n",
" -1.09861324e-01, -7.66406435e-02, -8.92393341e-02,\n",
" -7.15199341e-02, -4.73612148e-02, 1.08580770e-01,\n",
" -1.21513507e-01, -1.05357460e-01, 6.74361656e-02,\n",
" -4.38690932e-03, 1.16503187e-01, -3.59435867e-02,\n",
" 7.31901556e-02, -1.74380108e-02, -7.05477758e-02,\n",
" 1.08596165e-01, 6.29696491e-02, -5.83303807e-02,\n",
" -7.54875666e-02, -1.36464596e-02, -7.71573480e-02,\n",
" -2.71891710e-02, -4.78739321e-02, -9.25081686e-02,\n",
" -6.13014517e-02, 5.95388516e-02, -9.17615901e-02,\n",
" -3.81380127e-02, -5.05663866e-02, -8.24695715e-02,\n",
" -1.13404344e-01, 5.15800625e-02, -3.66510057e-03,\n",
" 7.28371262e-02, -9.21072276e-02, 1.42359266e-02,\n",
" -1.01002721e-02, -1.03648470e-01, -5.34525459e-03,\n",
" -8.25366426e-02, -9.67566272e-02, -1.64295830e-02,\n",
" -9.41195064e-02, 2.65334885e-02, -5.19784262e-02,\n",
" -4.54976814e-02, 5.67521335e-03, 4.43265268e-02,\n",
" -7.62736510e-02, -5.93229831e-02, -1.23981227e-01,\n",
" 7.31516644e-02, -5.95764649e-02, -1.18860096e-01,\n",
" -1.07534123e-01, 1.11174421e-01, 3.70504970e-02,\n",
" -1.16826433e-01, 9.91950541e-02, -2.46058583e-03,\n",
" 1.17291188e-01, 8.89449030e-02, 6.87024196e-02,\n",
" 7.03853365e-02, 9.01544287e-02, 8.00773174e-02,\n",
" -6.04898167e-02, -1.18795521e-01, 7.18502636e-02,\n",
" 5.69794249e-02, 7.96901024e-02, -4.81569808e-02,\n",
" -3.73464691e-02, 1.01958881e-02, -2.74985893e-02,\n",
" 1.00229813e-01, -9.69046979e-02, -5.52187747e-02,\n",
" 8.18466663e-02, 6.26641441e-02, 2.06996989e-02,\n",
" -7.29335012e-02, -8.19657086e-02, -8.16010265e-02,\n",
" 4.72417590e-02, 8.53051327e-02, 1.57985738e-03,\n",
" -9.80869743e-02, -5.97252516e-02, -4.05151788e-02,\n",
" -1.08644971e-02, -8.34748282e-02, -8.47595910e-02,\n",
" 5.40605655e-02, 3.75889472e-02, -1.08633863e-01,\n",
" -2.44132006e-02, -5.57597804e-02, -9.85676116e-02,\n",
" -7.01857986e-02, 1.07918721e-03, -9.46009194e-02,\n",
" 6.36057434e-02, 1.14003632e-01, 1.11124613e-01,\n",
" -8.96843460e-02, -7.44907054e-02, -7.37676377e-02,\n",
" 1.00759693e-01, -3.06579056e-02, -8.77184698e-02,\n",
" 7.64446470e-02, 8.55285574e-03, -4.71039007e-02,\n",
" -9.07868449e-02, 5.88761053e-02, 1.42775654e-02,\n",
" -4.48080372e-02, -9.66816643e-02, 1.15159944e-01,\n",
" -1.01961203e-01, 3.46479379e-02, -1.05328608e-01,\n",
" -3.52798131e-05, 4.91123771e-02, -1.24593827e-02,\n",
" 1.09669421e-01, 1.19981532e-01, 3.31333715e-02,\n",
" -8.91624082e-02, -8.39736724e-02, -9.94654804e-02,\n",
" -1.10629315e-01, -4.27813984e-02, 2.73388502e-03,\n",
" -1.57413494e-02, -1.21876513e-01, 8.96638520e-02,\n",
" -3.35428581e-02, -9.43683036e-02, 7.44361614e-03,\n",
" -7.20103682e-02, 2.43627608e-02, -4.97957628e-02,\n",
" 1.20531245e-01, -9.11815540e-02, 5.45253604e-02,\n",
" -2.05500871e-02, 4.20003493e-02, -3.71588970e-02,\n",
" -2.99258696e-02, 1.10072424e-01, 4.96684341e-02,\n",
" 3.94249428e-02, 9.24192737e-02, -6.87026141e-02,\n",
" 5.54126090e-02, 1.21277038e-01, 1.06781513e-01,\n",
" -2.10916992e-02, -1.01158427e-01, 8.73181360e-02,\n",
" -1.85903234e-02, -9.26418495e-02, 5.11638039e-02,\n",
" -8.83254628e-02, 5.28009878e-02, 1.20828611e-01,\n",
" 1.12179147e-02, -1.80498584e-02, -8.29209126e-02,\n",
" 1.15908639e-01, -4.09970612e-02, 7.88670134e-02,\n",
" 9.21133037e-02, 9.71186494e-02, -8.12240310e-02,\n",
" -5.64576712e-03, -4.38279546e-02, 1.08267166e-02,\n",
" -5.59229740e-02, -9.37391361e-02, -1.21897823e-01,\n",
" -1.16297619e-01, -7.67823791e-02, 1.03155265e-01,\n",
" -1.21537297e-01, 8.88602070e-02, 1.03929288e-01,\n",
" -1.22626607e-01, 1.02768154e-01, 5.89245680e-03,\n",
" 5.98690529e-02, 1.03655961e-01, -1.23348847e-01,\n",
" 9.74269851e-02, 4.58720201e-02, 1.28668591e-02,\n",
" -1.17337654e-01, -3.22647475e-02, -1.16642387e-02,\n",
" -1.24641824e-01, -1.20866256e-01, -3.05584511e-02,\n",
" -7.24899059e-02, -8.77139472e-02, 5.29197867e-03,\n",
" 4.04586368e-02, -2.47712196e-02, 1.07108267e-01,\n",
" 1.32330162e-02, 6.10819164e-02, 1.68997096e-02,\n",
" 2.24005158e-02, -1.16974941e-02, -1.11778952e-02,\n",
" 2.63769737e-02, -1.02952327e-01, -3.40435907e-03,\n",
" -5.29157400e-02, -1.12003399e-01, -8.95586718e-02,\n",
" 6.84295341e-03, 4.58174350e-02, 7.72624607e-02,\n",
" 1.03048706e-01, -5.27648087e-02, -2.70823565e-02,\n",
" -5.72125305e-02, -4.29143672e-02, -7.49979218e-02,\n",
" -3.66755631e-02, -1.85301112e-02, 6.15696021e-02,\n",
" -1.12007006e-01, 5.79944410e-02, 6.59277695e-02,\n",
" -1.00806096e-01, -1.02739253e-01, 3.83940687e-02,\n",
" -8.96987221e-02, -6.99505749e-02, 1.08068756e-01,\n",
" 4.23218390e-02, 4.60837060e-03, 1.06295758e-01,\n",
" -1.11758149e-01, 3.76292812e-02, 6.30945765e-02,\n",
" -1.20905514e-01, 6.56509655e-02, -9.26557924e-02,\n",
" -7.84248040e-02, -1.06195526e-01, -5.83900725e-02,\n",
" -1.09854219e-01, -1.04942777e-01, 1.19193557e-01,\n",
" -9.69883858e-02, -1.23364181e-02, 8.59977542e-02,\n",
" 1.22783047e-01, 1.85859255e-02, -1.01694149e-01,\n",
" 7.45597138e-02, 1.08103416e-01, -7.13870256e-02,\n",
" 1.10763573e-01, -9.78190593e-02, 1.21717088e-01,\n",
" 2.17584811e-02, -4.20167615e-02, -2.23513985e-02,\n",
" 6.87849143e-02, 1.01027185e-01, 9.71781261e-02,\n",
" -4.55811565e-02, -9.41280740e-02, 4.25590912e-03,\n",
" 9.36397260e-02, 1.12313080e-01, 4.43989602e-02,\n",
" -7.41768288e-02, -1.18437412e-01, 1.15913374e-01,\n",
" 1.12660642e-01, 1.16185156e-01, 4.03551379e-02,\n",
" -2.37625318e-02, -4.30299556e-02, 6.14176061e-02,\n",
" -1.28718470e-02, -3.63712667e-02, -4.27056290e-02,\n",
" -7.90924010e-02, -8.72041987e-02, 1.16898735e-01,\n",
" -4.32005729e-02, -6.87679342e-03, -4.72371068e-02,\n",
" -1.21289484e-01, -6.67406661e-02, 6.47198713e-02,\n",
" -9.40780793e-04, -1.08572902e-01, 7.50768224e-02,\n",
" -1.17450985e-01, -5.19511442e-02, 9.13224733e-02,\n",
" 8.74282908e-02, 9.44942019e-02, 2.13691747e-02,\n",
" -7.34423224e-02, 1.18736616e-01, -2.91985312e-02,\n",
" 8.64289281e-02, -1.13842522e-01, -6.12030623e-02,\n",
" 8.89420331e-02, 3.62042881e-02, 4.91349050e-02,\n",
" 1.20398563e-01, 5.79289354e-03, 7.90363626e-02,\n",
" -6.44088622e-02, -1.21776648e-01, -5.53010221e-02,\n",
" 7.34590461e-03, -3.02188125e-02, 1.23121073e-01,\n",
" 1.16406417e-01, -1.07837902e-01, -4.52308675e-02,\n",
" -9.97823628e-02, 4.55602013e-02, 5.86677757e-02,\n",
" 7.42760516e-02, 8.13179081e-02, 3.90270523e-02,\n",
" 4.56374692e-02, -7.96851693e-02, -8.72721753e-02,\n",
" -9.08583324e-02, 7.47641968e-02, -3.62796845e-02,\n",
" -1.10344844e-01, -9.60142854e-02, -1.01990296e-01,\n",
" 6.57264011e-02, 9.91527834e-02, -9.05189201e-02,\n",
" 8.18551608e-02, -7.69993309e-02, -1.22232341e-01,\n",
" 7.53107866e-02, 1.24028006e-01, -4.83372280e-02,\n",
" 6.17277371e-03, 1.12688653e-01, -6.20577724e-02,\n",
" 7.10878695e-02, 1.17302454e-01, 8.26895738e-02,\n",
" 6.56379739e-02, -1.05810739e-01, -6.12858708e-02,\n",
" -7.39834557e-02, 3.43612707e-02, -2.48933561e-02,\n",
" -7.63903800e-02, 3.08627742e-02, -3.81650237e-02,\n",
" -1.19673306e-01, 7.55765836e-02, 6.00135109e-02,\n",
" -2.28742183e-02, 3.53630139e-02, -9.96805263e-03,\n",
" 7.72938756e-03, -4.56387250e-03, -4.06815535e-02,\n",
" 6.18533622e-03, 1.47212572e-02, -2.43875197e-02,\n",
" 4.29445402e-02, -3.89498828e-02, -9.27393374e-02,\n",
" -5.22086441e-02, -2.26082583e-02, 9.57951422e-02,\n",
" 3.46120554e-02, -6.48856334e-02, -6.86339046e-02,\n",
" -1.12279742e-01, -5.05046065e-02, -1.06031523e-01,\n",
" -1.80377475e-04, 7.42575098e-03, 1.11170495e-01,\n",
" 8.25009047e-02, 1.18011169e-01, -5.29928763e-02,\n",
" -3.97497201e-02, 3.12659657e-02, -7.41696421e-02,\n",
" 9.75903964e-02, -9.35542355e-02, 8.80079439e-02,\n",
" -5.61856757e-02, 5.80452260e-02, 3.64823265e-02,\n",
" 9.15118609e-02, -1.88254288e-02, -6.10808719e-03,\n",
" 9.70787000e-02, 4.23711302e-02, 3.50691056e-02,\n",
" 9.57819568e-04, 4.26254221e-02, -5.22254409e-02,\n",
" -1.14700020e-01, 1.13905260e-01, -1.00506543e-01,\n",
" -1.15759757e-01, 3.76759741e-02, 6.83690573e-02,\n",
" -4.46735140e-02, 7.81807221e-02, -9.74186454e-02,\n",
" -6.72239414e-02, 1.06618473e-01, -2.85624594e-02,\n",
" 6.87452107e-02, -8.51354916e-02, -8.13989640e-02,\n",
" -1.09002344e-01, -4.75812514e-03, 1.15141498e-01,\n",
" -1.20282435e-01, 1.14322483e-01, 3.13306731e-02,\n",
" -1.01172873e-01, -1.22640813e-01, -1.64143127e-02,\n",
" -1.73890092e-02, -5.09458835e-02, -1.13819184e-01])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from scipy.optimize import minimize\n",
"num_epocas = 2\n",
"fmin = minimize(fun=backprop, x0=params, args=(input_size, hidden_size, num_labels, X, y, learning_rate), \n",
" method='TNC', jac=True, options={'maxiter': num_epocas})\n",
"fmin"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"O modelo é avaliado comparando-o as saídas geradas com as sequências ótimas:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Qualidade final: 115771.701975\n"
]
}
],
"source": [
"X = np.matrix(X)\n",
"theta1 = np.matrix(np.reshape(fmin.x[:hidden_size * (input_size + 1)], (hidden_size, (input_size + 1))))\n",
"theta2 = np.matrix(np.reshape(fmin.x[hidden_size * (input_size + 1):], (num_labels, (hidden_size + 1))))\n",
"\n",
"a1, z2, a2, z3, h = forward_propagate(X, theta1, theta2)\n",
"print(\"Qualidade final: \", np.sum(np.abs(h - y) * no_jobs))"
]
}
],
"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.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment