神经网络模型(TensorFlow)

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值