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 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
|
import tensorflow.compat.v1 as tf tf.disable_v2_behavior()
import input_data
FLAGS = tf.app.flags.FLAGS tf.app.flags.DEFINE_integer("is_train", 1, "train or predict")
def one_layer_full_connected():
mnist = input_data.read_data_sets("../data/mnist/", one_hot=True)
with tf.variable_scope("data"): x = tf.placeholder(tf.float32, [None, 784]) y_true = tf.placeholder(tf.int32, [None, 10])
with tf.variable_scope("fc_model"): weight = tf.Variable(tf.random_normal([784, 10], mean=0.0, stddev=1.0), name="w")
bias = tf.Variable(tf.constant(0.0, shape=[10]))
y_predict = tf.matmul(x, weight) + bias
with tf.variable_scope("soft_cross"): loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=y_true, logits=y_predict))
with tf.variable_scope("optimizer"): train_op = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
with tf.variable_scope("acc"): equal_list = tf.equal(tf.argmax(y_true, 1), tf.argmax(y_predict, 1)) accuracy = tf.reduce_mean(tf.cast(equal_list, tf.float32))
tf.summary.scalar("losses", loss) tf.summary.scalar("acc", accuracy)
tf.summary.histogram("weights", weight) tf.summary.histogram("biases", bias)
init_op = tf.global_variables_initializer()
merged = tf.summary.merge_all()
saver = tf.train.Saver()
with tf.Session() as sess: sess.run(init_op)
filewriter = tf.summary.FileWriter("./tmp/summary/test/", graph=sess.graph)
if FLAGS.is_train == 1: for i in range(2000): mnist_x, mnist_y = mnist.train.next_batch(50) sess.run(train_op, feed_dict={x: mnist_x, y_true:mnist_y})
summary = sess.run(merged, feed_dict={x: mnist_x, y_true: mnist_y}) filewriter.add_summary(summary, i)
print("训练第%d步,当前loss为:%f,准确率为:%f" % (i, sess.run(loss, feed_dict={x: mnist_x, y_true:mnist_y}), sess.run(accuracy, feed_dict={x: mnist_x, y_true:mnist_y})))
saver.save(sess, "./tmp/fnn/model") else: saver.restore(sess, "tmp/fnn/model")
for i in range(100): x_test, y_test = mnist.test.next_batch(1)
print("第%d张图片,手写数字目标为:%d,实际预测为:%d" % ( i, tf.argmax(y_test, 1).eval(), tf.argmax(sess.run(y_predict, feed_dict={x: x_test, y_true: y_test}), 1).eval() )) return None
if __name__ == "__main__": one_layer_full_connected()
训练第0步,当前loss为:10.366982,准确率为:0.180000 训练第1步,当前loss为:10.819915,准确率为:0.100000 训练第2步,当前loss为:12.081343,准确率为:0.120000 训练第3步,当前loss为:12.595780,准确率为:0.060000 训练第4步,当前loss为:13.353249,准确率为:0.040000 训练第5步,当前loss为:11.786127,准确率为:0.180000 训练第6步,当前loss为:11.357050,准确率为:0.140000 训练第7步,当前loss为:11.209402,准确率为:0.100000 训练第8步,当前loss为:8.908377,准确率为:0.160000 训练第9步,当前loss为:12.215146,准确率为:0.040000 训练第10步,当前loss为:10.103148,准确率为:0.060000 训练第11步,当前loss为:7.380269,准确率为:0.120000 ...... 训练第1981步,当前loss为:1.074039,准确率为:0.740000 训练第1982步,当前loss为:0.721144,准确率为:0.820000 训练第1983步,当前loss为:0.222450,准确率为:0.920000 训练第1984步,当前loss为:0.728902,准确率为:0.820000 训练第1985步,当前loss为:0.307183,准确率为:0.940000 训练第1986步,当前loss为:0.683472,准确率为:0.800000 训练第1987步,当前loss为:1.009890,准确率为:0.820000 训练第1988步,当前loss为:0.600786,准确率为:0.880000 训练第1989步,当前loss为:1.032702,准确率为:0.820000 训练第1990步,当前loss为:0.296450,准确率为:0.860000 训练第1991步,当前loss为:0.838521,准确率为:0.800000 训练第1992步,当前loss为:0.657953,准确率为:0.820000 训练第1993步,当前loss为:0.815459,准确率为:0.780000 训练第1994步,当前loss为:0.471784,准确率为:0.860000 训练第1995步,当前loss为:0.387192,准确率为:0.820000 训练第1996步,当前loss为:0.734302,准确率为:0.780000 训练第1997步,当前loss为:1.062341,准确率为:0.920000 训练第1998步,当前loss为:1.087465,准确率为:0.760000 训练第1999步,当前loss为:0.488956,准确率为:0.800000
第0张图片,手写数字目标为:7,实际预测为:7 第1张图片,手写数字目标为:2,实际预测为:2 第2张图片,手写数字目标为:1,实际预测为:1 第3张图片,手写数字目标为:0,实际预测为:0 第4张图片,手写数字目标为:4,实际预测为:4 第5张图片,手写数字目标为:1,实际预测为:1 第6张图片,手写数字目标为:4,实际预测为:4 第7张图片,手写数字目标为:9,实际预测为:9 第8张图片,手写数字目标为:5,实际预测为:6 第9张图片,手写数字目标为:9,实际预测为:9 第10张图片,手写数字目标为:0,实际预测为:0 第11张图片,手写数字目标为:6,实际预测为:8 第12张图片,手写数字目标为:9,实际预测为:9 第13张图片,手写数字目标为:0,实际预测为:0 第14张图片,手写数字目标为:1,实际预测为:1 第15张图片,手写数字目标为:5,实际预测为:5 第16张图片,手写数字目标为:9,实际预测为:9 第17张图片,手写数字目标为:7,实际预测为:7 第18张图片,手写数字目标为:3,实际预测为:3 第19张图片,手写数字目标为:4,实际预测为:4 第20张图片,手写数字目标为:9,实际预测为:9 第21张图片,手写数字目标为:6,实际预测为:6 第22张图片,手写数字目标为:6,实际预测为:6 第23张图片,手写数字目标为:5,实际预测为:5 第24张图片,手写数字目标为:4,实际预测为:4 第25张图片,手写数字目标为:0,实际预测为:0 第26张图片,手写数字目标为:7,实际预测为:7 第27张图片,手写数字目标为:4,实际预测为:4 第28张图片,手写数字目标为:0,实际预测为:0 第29张图片,手写数字目标为:1,实际预测为:1 第30张图片,手写数字目标为:3,实际预测为:3 第31张图片,手写数字目标为:1,实际预测为:1 第32张图片,手写数字目标为:3,实际预测为:3 第33张图片,手写数字目标为:4,实际预测为:6 第34张图片,手写数字目标为:7,实际预测为:7 第35张图片,手写数字目标为:2,实际预测为:2 第36张图片,手写数字目标为:7,实际预测为:7 第37张图片,手写数字目标为:1,实际预测为:1 第38张图片,手写数字目标为:2,实际预测为:2 第39张图片,手写数字目标为:1,实际预测为:1 第40张图片,手写数字目标为:1,实际预测为:1 第41张图片,手写数字目标为:7,实际预测为:7 第42张图片,手写数字目标为:4,实际预测为:4 第43张图片,手写数字目标为:2,实际预测为:8 第44张图片,手写数字目标为:3,实际预测为:3 第45张图片,手写数字目标为:5,实际预测为:5 第46张图片,手写数字目标为:1,实际预测为:3 第47张图片,手写数字目标为:2,实际预测为:6 第48张图片,手写数字目标为:4,实际预测为:4 第49张图片,手写数字目标为:4,实际预测为:4 第50张图片,手写数字目标为:6,实际预测为:6 第51张图片,手写数字目标为:3,实际预测为:3 第52张图片,手写数字目标为:5,实际预测为:5 第53张图片,手写数字目标为:5,实际预测为:8 第54张图片,手写数字目标为:6,实际预测为:2 第55张图片,手写数字目标为:0,实际预测为:0 第56张图片,手写数字目标为:4,实际预测为:4 第57张图片,手写数字目标为:1,实际预测为:1 第58张图片,手写数字目标为:9,实际预测为:9 第59张图片,手写数字目标为:5,实际预测为:7 第60张图片,手写数字目标为:7,实际预测为:7 第61张图片,手写数字目标为:8,实际预测为:8 第62张图片,手写数字目标为:9,实际预测为:9 第63张图片,手写数字目标为:3,实际预测为:2 第64张图片,手写数字目标为:7,实际预测为:7 第65张图片,手写数字目标为:4,实际预测为:5 第66张图片,手写数字目标为:6,实际预测为:2 第67张图片,手写数字目标为:4,实际预测为:4 第68张图片,手写数字目标为:3,实际预测为:3 第69张图片,手写数字目标为:0,实际预测为:0 第70张图片,手写数字目标为:7,实际预测为:7 第71张图片,手写数字目标为:0,实际预测为:0 第72张图片,手写数字目标为:2,实际预测为:2 第73张图片,手写数字目标为:9,实际预测为:9 第74张图片,手写数字目标为:1,实际预测为:1 第75张图片,手写数字目标为:7,实际预测为:7 第76张图片,手写数字目标为:3,实际预测为:3 第77张图片,手写数字目标为:2,实际预测为:7 第78张图片,手写数字目标为:9,实际预测为:9 第79张图片,手写数字目标为:7,实际预测为:7 第80张图片,手写数字目标为:7,实际预测为:7 第81张图片,手写数字目标为:6,实际预测为:6 第82张图片,手写数字目标为:2,实际预测为:2 第83张图片,手写数字目标为:7,实际预测为:7 第84张图片,手写数字目标为:8,实际预测为:5 第85张图片,手写数字目标为:4,实际预测为:4 第86张图片,手写数字目标为:7,实际预测为:7 第87张图片,手写数字目标为:3,实际预测为:3 第88张图片,手写数字目标为:6,实际预测为:6 第89张图片,手写数字目标为:1,实际预测为:1 第90张图片,手写数字目标为:3,实际预测为:3 第91张图片,手写数字目标为:6,实际预测为:6 第92张图片,手写数字目标为:9,实际预测为:8 第93张图片,手写数字目标为:3,实际预测为:3 第94张图片,手写数字目标为:1,实际预测为:1 第95张图片,手写数字目标为:4,实际预测为:4 第96张图片,手写数字目标为:1,实际预测为:1 第97张图片,手写数字目标为:7,实际预测为:7 第98张图片,手写数字目标为:6,实际预测为:6 第99张图片,手写数字目标为:9,实际预测为:9
|