Advertisement
Guest User

Untitled

a guest
May 25th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.96 KB | None | 0 0
  1. import math
  2. import numpy as np
  3. import tensorflow as tf
  4. import matplotlib.pyplot as plt
  5.  
  6. x0, x1 = 10, 20  # диапазон аргумента функции
  7.  
  8. test_data_size = 2000  # количество данных для итерации обучения
  9. iterations = 20000  # количество итераций обучения
  10. learn_rate = 0.01  # коэффициент переобучения
  11.  
  12. hiddenSize = 10  # размер скрытого слоя
  13.  
  14.  
  15. # функция генерации тестовых величин
  16. def generate_test_values():
  17.     train_x = []
  18.     train_y = []
  19.  
  20.     for _ in range(test_data_size):
  21.         x = x0 + (x1 - x0) * np.random.rand(2)
  22.         y = math.sin(x[0]) + 3 * math.sin(x[1])  # исследуемая функция
  23.         train_x.append([x])
  24.         train_y.append([y])
  25.  
  26.     return np.array(train_x), np.array(train_y)
  27.  
  28.  
  29. # узел на который будем подавать аргументы функции
  30. x = tf.placeholder(tf.float32, [2], name="x")
  31.  
  32. # узел на который будем подавать значения функции
  33. y = tf.placeholder(tf.float32, [None, 1], name="y")
  34.  
  35. # скрытый слой
  36. nn = tf.layers.dense(x, hiddenSize,
  37.                      activation=tf.nn.sigmoid,
  38.                      kernel_initializer=tf.initializers.ones(),
  39.                      bias_initializer=tf.initializers.random_uniform(minval=-x1, maxval=-x0),
  40.                      name="hidden")
  41.  
  42. # выходной слой
  43. model = tf.layers.dense(nn, 1,
  44.                         activation=None,
  45.                         name="output")
  46.  
  47. # функция подсчёта ошибки
  48. cost = tf.losses.mean_squared_error(y, model)
  49.  
  50. train = tf.train.GradientDescentOptimizer(learn_rate).minimize(cost)
  51.  
  52. init = tf.initializers.global_variables()
  53.  
  54. with tf.Session() as session:
  55.     session.run(init)
  56.  
  57.     for _ in range(iterations):
  58.  
  59.         train_dataset, train_values = generate_test_values()
  60.  
  61.         session.run(train, feed_dict={
  62.             x: train_dataset,
  63.             y: train_values
  64.         })
  65.  
  66.         if (_ % 1000 == 999):
  67.             print("cost = {}".format(session.run(cost, feed_dict={
  68.                 x: train_dataset,
  69.                 y: train_values
  70.             })))
  71.  
  72.     train_dataset, train_values = generate_test_values()
  73.  
  74.     train_values1 = session.run(model, feed_dict={
  75.         x: train_dataset,
  76.     })
  77.  
  78.     plt.plot(train_dataset, train_values, "bo",
  79.              train_dataset, train_values1, "ro")
  80.     plt.show()
  81.  
  82.     with tf.variable_scope("hidden", reuse=True):
  83.         w = tf.get_variable("kernel")
  84.         b = tf.get_variable("bias")
  85.         print("hidden:")
  86.         print("kernel=", w.eval())
  87.         print("bias = ", b.eval())
  88.  
  89.     with tf.variable_scope("output", reuse=True):
  90.         w = tf.get_variable("kernel")
  91.         b = tf.get_variable("bias")
  92.         print("output:")
  93.         print("kernel=", w.eval())
  94.         print("bias = ", b.eval())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement