tensorflow实现神经网络步骤:
1.获取数据
2.构建模型 Keras.layer构建模型 Flatten 将输入的数据进行形状改变展开 Dense添加一层神经元
3.优化算法 SGD
model.compile():
优化器 损失计算 准确率
构建双层神经网络进行模型训练与预测
读取数据集
建立神经网络
编译模型优化器 损失准确率
进行fit训练
评估模型测试效果
import tensorflow as tf
from tensorflow.python import keras
import os
import numpy as np
class SingleNN(object):
# 建立网络模型
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)), # 将输入的数据形状进行修改成神经网络要求的数据形状
keras.layers.Dense(128, activation=tf.nn.relu), # 定义隐藏层,128个神经元的网络层
keras.layers.Dense(10, activation=tf.nn.softmax) # 10个类别的分类,输出神经元个数必须跟总类别数量相同
])
def __init__(self):
# 返回两个元组
# x_train :(50000,784),y_train:(50000,1)
(self.x_train, self.y_train), (self.x_test, self.y_test) = keras.datasets.fashion_mnist.load_data()
# 数据归一化操作
self.x_train = self.x_train / 255.0
self.x_test = self.x_test / 255.0
def singlenn_compile(self):
"""
编译模型优化器 损失准确率
:return:
"""
# 优化器
# 损失函数
SingleNN.model.compile(optimizer=keras.optimizers.SGD(lr=0.01),
loss=tf.keras.losses.sparse_categorical_crossentropy,
metrics=['accuracy'])
return None
def singnn_fit(self):
"""
进行fit训练
:return:
"""
# TensorBoard回调函数
board=keras.callbacks.TensorBoard(log_dir="./graph",write_graph=True)
# 训练样本的特征值和目标值
SingleNN.model.fit(self.x_train, self.y_train, epochs=5,batch_size=128,callbacks=[board])
return None
def singnn_evalute(self):
"""
评估模型测试效果
:return:
"""
test_loss, test_acc = SingleNN.model.evaluate(self.x_test, self.y_test)
print(test_loss, test_acc)
return None
def single_predict(self):
# 加载模型
if os.path.exists("./ckpt/SingleNN"):
SingleNN.model.save_weights("./ckpt/SingleNN")
# if os.path.exists("./ckpt/SingleNN.h5"):
# SingleNN.model.save_weights("./ckpt/SingleNN.h5")
predictions = SingleNN.model.predict(self.x_test)
return predictions
if __name__ == '__main__':
snn = SingleNN()
snn.singlenn_compile()
snn.singnn_fit()
snn.singnn_evalute()
predictions = snn.single_predict()
print(predictions)
print(np.argmax(predictions, axis=1))
运行结果
Epoch 1/5
128/60000 [..............................] - ETA: 9:09 - loss: 2.4258 - acc: 0.1094
2176/60000 [>.............................] - ETA: 32s - loss: 2.2050 - acc: 0.2358
4096/60000 [=>............................] - ETA: 17s - loss: 2.0799 - acc: 0.3240
6016/60000 [==>...........................] - ETA: 11s - loss: 1.9760 - acc: 0.3885
7808/60000 [==>...........................] - ETA: 9s - loss: 1.8915 - acc: 0.4395
9472/60000 [===>..........................] - ETA: 7s - loss: 1.8210 - acc: 0.4754
11392/60000 [====>.........................] - ETA: 6s - loss: 1.7529 - acc: 0.4983
13440/60000 [=====>........................] - ETA: 5s - loss: 1.6874 - acc: 0.5198
15360/60000 [======>.......................] - ETA: 4s - loss: 1.6317 - acc: 0.5370
17280/60000 [=======>......................] - ETA: 4s - loss: 1.5814 - acc: 0.5501
19072/60000 [========>.....................] - ETA: 3s - loss: 1.5417 - acc: 0.5587
20992/60000 [=========>....................] - ETA: 3s - loss: 1.5025 - acc: 0.5676
22912/60000 [==========>...................] - ETA: 2s - loss: 1.4651 - acc: 0.5775
24704/60000 [===========>..................] - ETA: 2s - loss: 1.4335 - acc: 0.5852
26496/60000 [============>.................] - ETA: 2s - loss: 1.4036 - acc: 0.5930
28544/60000 [=============>................] - ETA: 2s - loss: 1.3727 - acc: 0.6007
30720/60000 [==============>...............] - ETA: 1s - loss: 1.3427 - acc: 0.6075
32768/60000 [===============>..............] - ETA: 1s - loss: 1.3177 - acc: 0.6132
34688/60000 [================>.............] - ETA: 1s - loss: 1.2972 - acc: 0.6178
36608/60000 [=================>............] - ETA: 1s - loss: 1.2767 - acc: 0.6228
38528/60000 [==================>...........] - ETA: 1s - loss: 1.2578 - acc: 0.6268
40448/60000 [===================>..........] - ETA: 1s - loss: 1.2390 - acc: 0.6307
42240/60000 [====================>.........] - ETA: 0s - loss: 1.2230 - acc: 0.6344
44288/60000 [=====================>........] - ETA: 0s - loss: 1.2044 - acc: 0.6386
46336/60000 [======================>.......] - ETA: 0s - loss: 1.1887 - acc: 0.6421
48128/60000 [=======================>......] - ETA: 0s - loss: 1.1750 - acc: 0.6451
49920/60000 [=======================>......] - ETA: 0s - loss: 1.1614 - acc: 0.6483
51840/60000 [========================>.....] - ETA: 0s - loss: 1.1486 - acc: 0.6517
53760/60000 [=========================>....] - ETA: 0s - loss: 1.1361 - acc: 0.6545
55680/60000 [==========================>...] - ETA: 0s - loss: 1.1247 - acc: 0.6571
57600/60000 [===========================>..] - ETA: 0s - loss: 1.1130 - acc: 0.6602
59648/60000 [============================>.] - ETA: 0s - loss: 1.1015 - acc: 0.6632
60000/60000 [==============================] - 3s 47us/sample - loss: 1.0993 - acc: 0.6637
Epoch 2/5
128/60000 [..............................] - ETA: 2s - loss: 0.8623 - acc: 0.7344
2048/60000 [>.............................] - ETA: 1s - loss: 0.7673 - acc: 0.7568
4096/60000 [=>............................] - ETA: 1s - loss: 0.7706 - acc: 0.7539
6272/60000 [==>...........................] - ETA: 1s - loss: 0.7687 - acc: 0.7530
8576/60000 [===>..........................] - ETA: 1s - loss: 0.7628 - acc: 0.7541
10752/60000 [====>.........................] - ETA: 1s - loss: 0.7603 - acc: 0.7535
12800/60000 [=====>........................] - ETA: 1s - loss: 0.7566 - acc: 0.7548
14848/60000 [======>.......................] - ETA: 1s - loss: 0.7514 - acc: 0.7561
17024/60000 [=======>......................] - ETA: 1s - loss: 0.7455 - acc: 0.7582
19200/60000 [========>.....................] - ETA: 1s - loss: 0.7409 - acc: 0.7583
21248/60000 [=========>....................] - ETA: 0s - loss: 0.7375 - acc: 0.7596
23424/60000 [==========>...................] - ETA: 0s - loss: 0.7352 - acc: 0.7598
25728/60000 [===========>..................] - ETA: 0s - loss: 0.7331 - acc: 0.7610
27648/60000 [============>.................] - ETA: 0s - loss: 0.7285 - acc: 0.7627
29568/60000 [=============>................] - ETA: 0s - loss: 0.7246 - acc: 0.7641
31488/60000 [==============>...............] - ETA: 0s - loss: 0.7223 - acc: 0.7639
33536/60000 [===============>..............] - ETA: 0s - loss: 0.7186 - acc: 0.7650
35584/60000 [================>.............] - ETA: 0s - loss: 0.7156 - acc: 0.7656
37504/60000 [=================>............] - ETA: 0s - loss: 0.7140 - acc: 0.7654
39424/60000 [==================>...........] - ETA: 0s - loss: 0.7128 - acc: 0.7656
41344/60000 [===================>..........] - ETA: 0s - loss: 0.7106 - acc: 0.7661
43136/60000 [====================>.........] - ETA: 0s - loss: 0.7093 - acc: 0.7669
45056/60000 [=====================>........] - ETA: 0s - loss: 0.7061 - acc: 0.7685
47232/60000 [======================>.......] - ETA: 0s - loss: 0.7029 - acc: 0.7695
49408/60000 [=======================>......] - ETA: 0s - loss: 0.6998 - acc: 0.7704
51712/60000 [========================>.....] - ETA: 0s - loss: 0.6984 - acc: 0.7711
53888/60000 [=========================>....] - ETA: 0s - loss: 0.6958 - acc: 0.7722
55936/60000 [==========================>...] - ETA: 0s - loss: 0.6927 - acc: 0.7736
58112/60000 [============================>.] - ETA: 0s - loss: 0.6922 - acc: 0.7739
60000/60000 [==============================] - 2s 25us/sample - loss: 0.6896 - acc: 0.7746
Epoch 3/5
128/60000 [..............................] - ETA: 2s - loss: 0.6917 - acc: 0.7891
2176/60000 [>.............................] - ETA: 1s - loss: 0.6376 - acc: 0.7918
4224/60000 [=>............................] - ETA: 1s - loss: 0.6419 - acc: 0.7867
6272/60000 [==>...........................] - ETA: 1s - loss: 0.6447 - acc: 0.7873
8192/60000 [===>..........................] - ETA: 1s - loss: 0.6419 - acc: 0.7888
10240/60000 [====>.........................] - ETA: 1s - loss: 0.6382 - acc: 0.7907
12288/60000 [=====>........................] - ETA: 1s - loss: 0.6313 - acc: 0.7922
14336/60000 [======>.......................] - ETA: 1s - loss: 0.6287 - acc: 0.7935
16256/60000 [=======>......................] - ETA: 1s - loss: 0.6258 - acc: 0.7952
18432/60000 [========>.....................] - ETA: 1s - loss: 0.6248 - acc: 0.7960
20352/60000 [=========>....................] - ETA: 1s - loss: 0.6229 - acc: 0.7960
22272/60000 [==========>...................] - ETA: 0s - loss: 0.6234 - acc: 0.7961
24192/60000 [===========>..................] - ETA: 0s - loss: 0.6225 - acc: 0.7968
26240/60000 [============>.................] - ETA: 0s - loss: 0.6217 - acc: 0.7966
28288/60000 [=============>................] - ETA: 0s - loss: 0.6207 - acc: 0.7971
30336/60000 [==============>...............] - ETA: 0s - loss: 0.6202 - acc: 0.7973
32512/60000 [===============>..............] - ETA: 0s - loss: 0.6200 - acc: 0.7973
34688/60000 [================>.............] - ETA: 0s - loss: 0.6190 - acc: 0.7972
36864/60000 [=================>............] - ETA: 0s - loss: 0.6168 - acc: 0.7980
39040/60000 [==================>...........] - ETA: 0s - loss: 0.6140 - acc: 0.7991
41216/60000 [===================>..........] - ETA: 0s - loss: 0.6127 - acc: 0.7998
43264/60000 [====================>.........] - ETA: 0s - loss: 0.6110 - acc: 0.8006
45312/60000 [=====================>........] - ETA: 0s - loss: 0.6084 - acc: 0.8016
47360/60000 [======================>.......] - ETA: 0s - loss: 0.6079 - acc: 0.8018
49408/60000 [=======================>......] - ETA: 0s - loss: 0.6067 - acc: 0.8019
51584/60000 [========================>.....] - ETA: 0s - loss: 0.6056 - acc: 0.8026
53632/60000 [=========================>....] - ETA: 0s - loss: 0.6038 - acc: 0.8031
55552/60000 [==========================>...] - ETA: 0s - loss: 0.6037 - acc: 0.8030
57600/60000 [===========================>..] - ETA: 0s - loss: 0.6035 - acc: 0.8030
60000/60000 [==============================] - 2s 25us/sample - loss: 0.6042 - acc: 0.8026
Epoch 4/5
128/60000 [..............................] - ETA: 2s - loss: 0.5604 - acc: 0.8438
2176/60000 [>.............................] - ETA: 1s - loss: 0.6128 - acc: 0.8028
4224/60000 [=>............................] - ETA: 1s - loss: 0.5851 - acc: 0.8127
6272/60000 [==>...........................] - ETA: 1s - loss: 0.5781 - acc: 0.8141
8192/60000 [===>..........................] - ETA: 1s - loss: 0.5802 - acc: 0.8114
10240/60000 [====>.........................] - ETA: 1s - loss: 0.5755 - acc: 0.8118
12032/60000 [=====>........................] - ETA: 1s - loss: 0.5688 - acc: 0.8144
13952/60000 [=====>........................] - ETA: 1s - loss: 0.5674 - acc: 0.8149
16000/60000 [=======>......................] - ETA: 1s - loss: 0.5692 - acc: 0.8146
18176/60000 [========>.....................] - ETA: 1s - loss: 0.5671 - acc: 0.8159
20480/60000 [=========>....................] - ETA: 1s - loss: 0.5688 - acc: 0.8153
22784/60000 [==========>...................] - ETA: 0s - loss: 0.5685 - acc: 0.8157
25216/60000 [===========>..................] - ETA: 0s - loss: 0.5707 - acc: 0.8141
27392/60000 [============>.................] - ETA: 0s - loss: 0.5693 - acc: 0.8141
29440/60000 [=============>................] - ETA: 0s - loss: 0.5693 - acc: 0.8139
31488/60000 [==============>...............] - ETA: 0s - loss: 0.5705 - acc: 0.8130
33536/60000 [===============>..............] - ETA: 0s - loss: 0.5687 - acc: 0.8135
35584/60000 [================>.............] - ETA: 0s - loss: 0.5677 - acc: 0.8137
37888/60000 [=================>............] - ETA: 0s - loss: 0.5667 - acc: 0.8137
39936/60000 [==================>...........] - ETA: 0s - loss: 0.5655 - acc: 0.8143
41984/60000 [===================>..........] - ETA: 0s - loss: 0.5652 - acc: 0.8144
44032/60000 [=====================>........] - ETA: 0s - loss: 0.5646 - acc: 0.8149
46336/60000 [======================>.......] - ETA: 0s - loss: 0.5629 - acc: 0.8154
48512/60000 [=======================>......] - ETA: 0s - loss: 0.5625 - acc: 0.8152
50560/60000 [========================>.....] - ETA: 0s - loss: 0.5620 - acc: 0.8151
52480/60000 [=========================>....] - ETA: 0s - loss: 0.5621 - acc: 0.8151
54400/60000 [==========================>...] - ETA: 0s - loss: 0.5612 - acc: 0.8152
56448/60000 [===========================>..] - ETA: 0s - loss: 0.5596 - acc: 0.8157
58368/60000 [============================>.] - ETA: 0s - loss: 0.5595 - acc: 0.8158
60000/60000 [==============================] - 1s 25us/sample - loss: 0.5588 - acc: 0.8159
Epoch 5/5
128/60000 [..............................] - ETA: 2s - loss: 0.4721 - acc: 0.8438
2304/60000 [>.............................] - ETA: 1s - loss: 0.5414 - acc: 0.8186
4608/60000 [=>............................] - ETA: 1s - loss: 0.5704 - acc: 0.8086
6784/60000 [==>...........................] - ETA: 1s - loss: 0.5621 - acc: 0.8118
8832/60000 [===>..........................] - ETA: 1s - loss: 0.5492 - acc: 0.8167
10752/60000 [====>.........................] - ETA: 1s - loss: 0.5442 - acc: 0.8174
12672/60000 [=====>........................] - ETA: 1s - loss: 0.5486 - acc: 0.8166
14592/60000 [======>.......................] - ETA: 1s - loss: 0.5484 - acc: 0.8166
16512/60000 [=======>......................] - ETA: 1s - loss: 0.5443 - acc: 0.8180
18560/60000 [========>.....................] - ETA: 1s - loss: 0.5454 - acc: 0.8173
20864/60000 [=========>....................] - ETA: 0s - loss: 0.5426 - acc: 0.8196
22912/60000 [==========>...................] - ETA: 0s - loss: 0.5409 - acc: 0.8195
24960/60000 [===========>..................] - ETA: 0s - loss: 0.5403 - acc: 0.8200
27264/60000 [============>.................] - ETA: 0s - loss: 0.5384 - acc: 0.8207
29568/60000 [=============>................] - ETA: 0s - loss: 0.5363 - acc: 0.8221
31616/60000 [==============>...............] - ETA: 0s - loss: 0.5369 - acc: 0.8218
33536/60000 [===============>..............] - ETA: 0s - loss: 0.5357 - acc: 0.8221
35584/60000 [================>.............] - ETA: 0s - loss: 0.5343 - acc: 0.8218
37504/60000 [=================>............] - ETA: 0s - loss: 0.5355 - acc: 0.8220
39680/60000 [==================>...........] - ETA: 0s - loss: 0.5341 - acc: 0.8222
41984/60000 [===================>..........] - ETA: 0s - loss: 0.5346 - acc: 0.8221
44160/60000 [=====================>........] - ETA: 0s - loss: 0.5346 - acc: 0.8219
46336/60000 [======================>.......] - ETA: 0s - loss: 0.5333 - acc: 0.8223
48512/60000 [=======================>......] - ETA: 0s - loss: 0.5328 - acc: 0.8221
50560/60000 [========================>.....] - ETA: 0s - loss: 0.5323 - acc: 0.8224
52352/60000 [=========================>....] - ETA: 0s - loss: 0.5313 - acc: 0.8227
54400/60000 [==========================>...] - ETA: 0s - loss: 0.5314 - acc: 0.8226
56192/60000 [===========================>..] - ETA: 0s - loss: 0.5303 - acc: 0.8230
58112/60000 [============================>.] - ETA: 0s - loss: 0.5298 - acc: 0.8233
60000/60000 [==============================] - 2s 25us/sample - loss: 0.5290 - acc: 0.8237
32/10000 [..............................] - ETA: 10s - loss: 0.6384 - acc: 0.8125
800/10000 [=>............................] - ETA: 0s - loss: 0.5243 - acc: 0.8325
1792/10000 [====>.........................] - ETA: 0s - loss: 0.5124 - acc: 0.8326
2816/10000 [=======>......................] - ETA: 0s - loss: 0.5141 - acc: 0.8285
3744/10000 [==========>...................] - ETA: 0s - loss: 0.5410 - acc: 0.8213
4736/10000 [=============>................] - ETA: 0s - loss: 0.5357 - acc: 0.8212
5696/10000 [================>.............] - ETA: 0s - loss: 0.5487 - acc: 0.8178
6688/10000 [===================>..........] - ETA: 0s - loss: 0.5486 - acc: 0.8158
7712/10000 [======================>.......] - ETA: 0s - loss: 0.5444 - acc: 0.8169
8672/10000 [=========================>....] - ETA: 0s - loss: 0.5443 - acc: 0.8161
9664/10000 [===========================>..] - ETA: 0s - loss: 0.5450 - acc: 0.8144
10000/10000 [==============================] - 1s 56us/sample - loss: 0.5432 - acc: 0.8152
0.5431831553936005 0.8152
[[7.91161001e-05 5.26897129e-05 1.16009556e-04 ... 2.56495744e-01
1.08312052e-02 5.79196334e-01]
[6.12425501e-04 1.73531389e-05 8.73716950e-01 ... 1.01209574e-08
2.41127316e-04 2.16604258e-06]
[2.19699272e-04 9.99303341e-01 5.25799915e-05 ... 1.05287563e-06
2.24201813e-07 2.44185367e-06]
...
[7.98134580e-02 2.46766605e-04 4.83293273e-03 ... 9.50693444e-04
7.13295281e-01 5.87254239e-04]
[6.34137308e-04 9.84385669e-01 4.03998332e-04 ... 5.59508153e-05
7.93626987e-06 2.27624638e-04]
[1.26309204e-03 1.15301798e-03 1.31963659e-03 ... 3.66651148e-01
4.36461568e-02 6.23499341e-02]]
[9 2 1 ... 8 1 5]