Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. import tensorflow as tf
  2. import numpy as np
  3. from random import shuffle
  4.  
  5. W = 32
  6.  
  7. np.random.seed(0)
  8. tf.set_random_seed(0)
  9.  
  10. tf_w1 = tf.truncated_normal([2, 2, 1, 5], stddev=0.1)
  11. tf_w2 = tf.constant(0.1, shape=[5])
  12. tf_w5 = tf.truncated_normal([4*4*5, 2000], stddev=0.1)
  13. tf_w6 = tf.constant(0.1, shape=[2000])
  14. tf_w7 = tf.truncated_normal([2000, 2], stddev=0.1)
  15. tf_w8 = tf.constant(0.1, shape=[2])
  16. with tf.Session() as sess:
  17. w1, w2, w5, w6, w7, w8 = sess.run([tf_w1, tf_w2, tf_w5, tf_w6, tf_w7, tf_w8])
  18.  
  19. x = tf.placeholder(tf.float32, shape=[None, W*W])
  20. y_true = tf.placeholder(tf.float32, shape=[None, 2])
  21. input_image = tf.reshape(x, [-1, W, W, 1])
  22.  
  23. w_conv1 = tf.Variable(w1)
  24. b_conv1 = tf.Variable(w2)
  25. h_conv1 = tf.nn.relu(tf.nn.conv2d(input_image, w_conv1, strides=[1, 1, 1, 1], padding='SAME') + b_conv1)
  26. h_pool1 = tf.nn.max_pool(h_conv1, ksize=[1, 2, 2, 1], strides=[1, 1, 1, 1], padding='SAME')
  27.  
  28. h_pool1_flat = tf.reshape(h_pool1, [-1, 4*4*5])
  29.  
  30. w_fc1 = tf.Variable(w5)
  31. b_fc1 = tf.Variable(w6)
  32. h_fc1 = tf.nn.sigmoid(tf.matmul(h_pool1_flat, w_fc1) + b_fc1)
  33.  
  34. w_fc2 = tf.Variable(w7)
  35. b_fc2 = tf.Variable(w8)
  36. y_conv = (tf.matmul(h_fc1, w_fc2) + b_fc2) # softmax применяется в loss
  37.  
  38. loss = tf.reduce_logsumexp(tf.nn.softmax_cross_entropy_with_logits(labels=y_true, logits=y_conv))
  39. train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
  40. correct_prediction = tf.equal(tf.argmax(y_conv, 1), tf.argmax(y_true, 1))
  41. accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
  42.  
  43. import pickle
  44. train_x = np.load('train_x.npy')
  45. train_y = np.load('train_y.npy')
  46. test_x = np.load('test_x.npy')
  47. test_y = np.load('test_y.npy')
  48.  
  49. permut = list(range(len(train_y)))
  50. shuffle(permut)
  51. train_x = [train_x[i] for i in permut]
  52. train_y = [train_y[i] for i in permut]
  53.  
  54. permut = list(range(len(test_y)))
  55. shuffle(permut)
  56. test_x = [test_x[i] for i in permut]
  57. test_y = [test_y[i] for i in permut]
  58.  
  59. len_dataset = 1000
  60. with tf.Session() as sess:
  61. sess.run(tf.global_variables_initializer())
  62. accuracy_change = []
  63. loss_change = []
  64. for i in range(len(train_x)):
  65. train_accuracy, train_loss = sess.run([accuracy, loss], feed_dict={x:np.asarray(train_x[i]).reshape(1, W*W), y_true:np.asarray(train_y[i]).reshape(1, 2)})
  66. train_step.run(feed_dict={x:np.asarray(train_x[i]).reshape(1, W*W), y_true:np.asarray(train_y[i]).reshape(1, 2)})
  67. loss_change.append(train_loss)
  68. accuracy_change.append(train_accuracy)
  69. if len(loss_change)%len_dataset == 0:
  70. print('шаг:', len(loss_change), 'loss:', sum(loss_change[-len_dataset:])/len_dataset, 'accuracy:', sum(accuracy_change[-len_dataset:])/len_dataset)
  71.  
  72. print('mnist test...')
  73. accuracy_change = []
  74. loss_change = []
  75. for i in range(len(test_x)):
  76. train_accuracy, train_loss = sess.run([accuracy, loss], feed_dict={x:np.asarray(test_x[i]).reshape(1, W*W), y_true:np.asarray(test_y[i]).reshape(1,2)})
  77. loss_change.append(train_loss)
  78. accuracy_change.append(train_accuracy)
  79. if len(loss_change)%len_dataset == 0:
  80. print('шаг:', len(loss_change), 'loss:', sum(loss_change[-len_dataset:])/len_dataset, 'accuracy:', sum(accuracy_change[-len_dataset:])/len_dataset)
  81. print('test_loss:', sum(loss_change)/len(loss_change), 'test_accuracy:', sum(accuracy_change)/len(accuracy_change))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement