-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.py
140 lines (108 loc) · 5.9 KB
/
run.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import tensorflow as tf
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import os
from datetime import datetime
import relu_model
import sigmoid_model
import relu_he_model
def save_graph_as_image(train_list, test_list, ylabel="", label1="train", label2="test", cate="None"):
print("Save "+ylabel+" graph in ./graph")
x = np.arange(len(train_list))
plt.clf()
plt.plot(x, train_list, label=label1, linestyle='--')
plt.plot(x, test_list, label=label2, linestyle='--')
plt.xlabel("step")
plt.ylabel(ylabel)
plt.ylim(-0.1, max([1, max(train_list), max(test_list)])*1.1)
if(ylabel == "accuracy"):
plt.legend(loc='lower right')
else:
plt.legend(loc='upper right')
#plt.show()
if(not(os.path.exists("./graph"))):
os.mkdir("./graph")
else:
pass
now = datetime.now()
plt.savefig("./graph/"+now.strftime('%Y%m%d_%H%M%S%f')+"_"+cate+"_"+ylabel+".png")
# plt.show()
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
sess = tf.InteractiveSession()
x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])
keep_prob = tf.placeholder(tf.float32)
train_step_relu, accuracy_relu, cross_entropy_relu = relu_model.model(x=x, y_=y_, keep_prob=keep_prob)
train_step_sigmoid, accuracy_sigmoid, cross_entropy_sigmoid = sigmoid_model.model(x=x, y_=y_, keep_prob=keep_prob)
train_step_he, accuracy_he, cross_entropy_he = relu_he_model.model(x=x, y_=y_, keep_prob=keep_prob)
sess.run(tf.global_variables_initializer())
train_acc_list_relu = []
train_loss_list_relu = []
test_acc_list_relu = []
test_loss_list_relu = []
train_acc_list_sigmoid = []
train_loss_list_sigmoid = []
test_acc_list_sigmoid = []
test_loss_list_sigmoid = []
train_acc_list_he = []
train_loss_list_he = []
test_acc_list_he = []
test_loss_list_he = []
print("\nTraining")
for i in range(1000):
batch = mnist.train.next_batch(50)
if i%100 == 0:
test_batch = mnist.test.next_batch(50)
train_accuracy_relu = accuracy_relu.eval(feed_dict={
x:batch[0], y_: batch[1], keep_prob: 1.0})
train_loss_relu = np.nan_to_num(cross_entropy_relu.eval(feed_dict={
x:batch[0], y_: batch[1], keep_prob: 1.0}))
test_accuracy_relu = accuracy_relu.eval(feed_dict={
x:test_batch[0], y_: test_batch[1], keep_prob: 1.0})
test_loss_relu = np.nan_to_num(cross_entropy_relu.eval(feed_dict={
x:test_batch[0], y_: test_batch[1], keep_prob: 1.0}))
train_acc_list_relu.append(train_accuracy_relu)
train_loss_list_relu.append(train_loss_relu)
test_acc_list_relu.append(test_accuracy_relu)
test_loss_list_relu.append(test_loss_relu)
train_accuracy_sigmoid = accuracy_sigmoid.eval(feed_dict={
x:batch[0], y_: batch[1], keep_prob: 1.0})
train_loss_sigmoid = np.nan_to_num(cross_entropy_sigmoid.eval(feed_dict={
x:batch[0], y_: batch[1], keep_prob: 1.0}))
test_accuracy_sigmoid = accuracy_sigmoid.eval(feed_dict={
x:test_batch[0], y_: test_batch[1], keep_prob: 1.0})
test_loss_sigmoid = np.nan_to_num(cross_entropy_sigmoid.eval(feed_dict={
x:test_batch[0], y_: test_batch[1], keep_prob: 1.0}))
train_acc_list_sigmoid.append(train_accuracy_sigmoid)
train_loss_list_sigmoid.append(train_loss_sigmoid)
test_acc_list_sigmoid.append(test_accuracy_sigmoid)
test_loss_list_sigmoid.append(test_loss_sigmoid)
train_accuracy_he = accuracy_he.eval(feed_dict={
x:batch[0], y_: batch[1], keep_prob: 1.0})
train_loss_he = np.nan_to_num(cross_entropy_he.eval(feed_dict={
x:batch[0], y_: batch[1], keep_prob: 1.0}))
test_accuracy_he = accuracy_he.eval(feed_dict={
x:test_batch[0], y_: test_batch[1], keep_prob: 1.0})
test_loss_he = np.nan_to_num(cross_entropy_he.eval(feed_dict={
x:test_batch[0], y_: test_batch[1], keep_prob: 1.0}))
train_acc_list_he.append(train_accuracy_he)
train_loss_list_he.append(train_loss_he)
test_acc_list_he.append(test_accuracy_he)
test_loss_list_he.append(test_loss_he)
print("step %4d, training accuracy | %.4f %2.4f |%.4f %2.4f |%.4f %2.4f"%(i, train_accuracy_relu, train_loss_relu, train_accuracy_sigmoid, train_loss_sigmoid, train_accuracy_he, train_loss_he))
train_step_relu.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
train_step_sigmoid.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
train_step_he.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
save_graph_as_image(train_list=train_acc_list_relu, test_list=test_acc_list_relu, ylabel="Accuracy", cate="ReLU")
save_graph_as_image(train_list=train_loss_list_relu, test_list=test_loss_list_relu, ylabel="Loss", cate="ReLU")
save_graph_as_image(train_list=train_acc_list_sigmoid, test_list=test_acc_list_sigmoid, ylabel="Accuracy", cate="Sigmoid")
save_graph_as_image(train_list=train_loss_list_sigmoid, test_list=test_loss_list_sigmoid, ylabel="Loss", cate="Sigmoid")
save_graph_as_image(train_list=train_acc_list_he, test_list=test_acc_list_he, ylabel="Accuracy", cate="He")
save_graph_as_image(train_list=train_loss_list_he, test_list=test_loss_list_he, ylabel="Loss", cate="He")
save_graph_as_image(train_list=train_acc_list_relu, test_list=train_acc_list_sigmoid, ylabel="Accuracy", label1="ReLU", label2="Sigmoid", cate="R_VS_S")
save_graph_as_image(train_list=train_loss_list_relu, test_list=train_loss_list_sigmoid, ylabel="Loss", label1="ReLU", label2="Sigmoid", cate="R_VS_S")
save_graph_as_image(train_list=train_acc_list_relu, test_list=train_acc_list_he, ylabel="Accuracy", label1="ReLU", label2="He", cate="R_VS_H")
save_graph_as_image(train_list=train_loss_list_relu, test_list=train_loss_list_he, ylabel="Loss", label1="ReLU", label2="He", cate="R_VS_H")