In [1]:
# Необходмые команды импорта.
import sys
sys.path.append('../')
sys.path.append('../source')
import numpy as np
from numpy import linalg as LA
import tensorflow as tf
from matplotlib import pylab as plt
import numpy.random as rand
from physlearn.NeuralNet.NeuralNet import NeuralNet
from physlearn.Optimizer.Optimizer import Optimizer

import math_util
import math

from mpl_toolkits.mplot3d.axes3d import Axes3D
%matplotlib notebook

def get_data(a,b,m,d):
    x = np.linspace(a,b,m)
    g = np.meshgrid(*[x for i in range(d)])
    vect = np.zeros((d, g[0].size))
    for i in range(g[0].size):
        temp = []
        for j in range(d):
            temp.append(g[j].flat[i]) # ТУТ К i обращение по единичному индексу в матрице, а не по строка-столбец
        vect[:,i] = np.array(temp)
    return vect, g

a = 0
b = 2*math.pi
k = 1
sigmoid_ammount = 25
m_1 = 10
space_dim = 2
iterations = int(1e4)
max_eps = 1e-6
max_t = 1800

x, grids = get_data(a, b, m_1, space_dim)
m = x[0].size


D:\Anaconda\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-1-ce8d2f1d8909> in <module>()
      5 import numpy as np
      6 from numpy import linalg as LA
----> 7 import tensorflow as tf
      8 from matplotlib import pylab as plt
      9 import numpy.random as rand

D:\Anaconda\lib\site-packages\tensorflow\__init__.py in <module>()
     22 
     23 # pylint: disable=g-bad-import-order
---> 24 from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
     25 
     26 try:

D:\Anaconda\lib\site-packages\tensorflow\python\__init__.py in <module>()
     86 # Bring in subpackages.
     87 from tensorflow.python import data
---> 88 from tensorflow.python import keras
     89 from tensorflow.python.feature_column import feature_column_lib as feature_column
     90 from tensorflow.python.layers import layers

D:\Anaconda\lib\site-packages\tensorflow\python\keras\__init__.py in <module>()
     22 from __future__ import print_function
     23 
---> 24 from tensorflow.python.keras import activations
     25 from tensorflow.python.keras import applications
     26 from tensorflow.python.keras import backend

D:\Anaconda\lib\site-packages\tensorflow\python\keras\activations.py in <module>()
     22 
     23 from tensorflow.python.keras import backend as K
---> 24 from tensorflow.python.keras.utils.generic_utils import deserialize_keras_object
     25 from tensorflow.python.ops import math_ops
     26 from tensorflow.python.ops import nn

D:\Anaconda\lib\site-packages\tensorflow\python\keras\utils\__init__.py in <module>()
     33 from tensorflow.python.keras.utils.layer_utils import convert_all_kernels_in_model
     34 from tensorflow.python.keras.utils.layer_utils import get_source_inputs
---> 35 from tensorflow.python.keras.utils.multi_gpu_utils import multi_gpu_model
     36 from tensorflow.python.keras.utils.np_utils import normalize
     37 from tensorflow.python.keras.utils.np_utils import to_categorical

D:\Anaconda\lib\site-packages\tensorflow\python\keras\utils\multi_gpu_utils.py in <module>()
     20 from tensorflow.python.framework import ops
     21 from tensorflow.python.keras import backend as K
---> 22 from tensorflow.python.keras.engine.training import Model
     23 from tensorflow.python.ops import array_ops
     24 from tensorflow.python.util.tf_export import tf_export

D:\Anaconda\lib\site-packages\tensorflow\python\keras\engine\__init__.py in <module>()
     21 # TODO(fchollet): Remove hourglass imports once external code is done importing
     22 # non-public APIs.
---> 23 from tensorflow.python.keras.engine.base_layer import InputSpec
     24 from tensorflow.python.keras.engine.base_layer import Layer
     25 from tensorflow.python.keras.engine.input_layer import Input

D:\Anaconda\lib\site-packages\tensorflow\python\keras\engine\base_layer.py in <module>()
     36 from tensorflow.python.keras import constraints
     37 from tensorflow.python.keras import initializers
---> 38 from tensorflow.python.keras import regularizers
     39 from tensorflow.python.keras.utils import generic_utils
     40 from tensorflow.python.keras.utils import tf_utils

D:\Anaconda\lib\importlib\_bootstrap.py in _find_and_load(name, import_)

D:\Anaconda\lib\importlib\_bootstrap.py in _find_and_load_unlocked(name, import_)

D:\Anaconda\lib\importlib\_bootstrap.py in _find_spec(name, path, target)

D:\Anaconda\lib\importlib\_bootstrap_external.py in find_spec(cls, fullname, path, target)

D:\Anaconda\lib\importlib\_bootstrap_external.py in _get_spec(cls, fullname, path, target)

D:\Anaconda\lib\importlib\_bootstrap_external.py in find_spec(self, fullname, target)

D:\Anaconda\lib\importlib\_bootstrap_external.py in _path_isfile(path)

D:\Anaconda\lib\importlib\_bootstrap_external.py in _path_is_mode_type(path, mode)

D:\Anaconda\lib\importlib\_bootstrap_external.py in _path_stat(path)

KeyboardInterrupt: 

In [ ]:
net = NeuralNet(-2,2)
net.add_input_layer(space_dim)
net.add(sigmoid_ammount, tf.sigmoid)
net.add_output_layer(1, net.linear)
net.compile()
net.enable_numpy_mode()
sess = net.return_session()
dim = net.return_unroll_dim()
f = tf.cos(k*tf.sqrt(tf.reduce_sum(tf.square(net.x), axis = 0)))
J = (tf.reduce_sum(tf.square(f - tf.reduce_sum(y, axis = 0))))*(1/m) 
print(dim)

def getCost():
    y = net.return_graph()
    return (tf.reduce_sum(tf.square(f - tf.reduce_sum(y, axis = 0))))*(1/m) 

def COST_TFDE(params):
    net.roll_matrixes(params)
    res = getCost()
    return res

def COST(params):
    net.roll_matrixes(params)
    res = net.calc(J, {net.x:x})
    return res

In [ ]:
NN_grid = net.run(x).reshape((m_1,m_1))
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(grids[0], grids[1], NN_grid)

In [ ]:


In [ ]:


In [ ]:
opt = Optimizer()
#opt.params_dict['number_of_individuals'] = dim
#opt.params_dict['sess'] = net.sess
#opt.params_dict['placeholder'] = net.x
#opt.params_dict['x'] = x

In [ ]:
optimisation_result = opt.optimize(COST, dim, optimizer=opt.nelder_mead, end_cond = iterations, max_time=max_t, min_func_value=max_eps)
net.roll_matrixes(optimisation_result.x)
print("Информация: ", optimisation_result)

In [ ]:
if (space_dim == 2):
    NN_grid = net.run(x).reshape((m_1, m_1))
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.plot_surface(grids[0], grids[1], NN_grid)
    
    f_true = net.calc(f, {net.x:x}).reshape((m_1, m_1))
    fig1 = plt.figure()
    ax = Axes3D(fig1)
    ax.plot_surface(grids[0], grids[1], f_true)
    
    error = NN_grid - f_true
    fig2 = plt.figure()
    ax = Axes3D(fig2)
    ax.plot_surface(grids[0], grids[1], error)