使用数据集Fashion_MNIST搭建训练网络

###导入包

import tensorflow as tf
print(tf.__version__)
1.13.1

###FashionMnIST数据可以从Tensor flow的Keras库的API中直接获得

mnist=tf.keras.datasets.fashion_mnist

###开始加载数据作为训练集和测试集

(training_images,training_labels),(test_images,test_labels)=mnist.load_data()
import matplotlib.pyplot as plt
plt.imshow(training_images[32])
print(training_labels[0])
print(training_images[0])
9
[[  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   1   0   0  13  73   0
    0   1   4   0   0   0   0   1   1   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   3   0  36 136 127  62
   54   0   0   0   1   3   4   0   0   3]
 [  0   0   0   0   0   0   0   0   0   0   0   0   6   0 102 204 176 134
  144 123  23   0   0   0   0  12  10   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0 155 236 207 178
  107 156 161 109  64  23  77 130  72  15]
 [  0   0   0   0   0   0   0   0   0   0   0   1   0  69 207 223 218 216
  216 163 127 121 122 146 141  88 172  66]
 [  0   0   0   0   0   0   0   0   0   1   1   1   0 200 232 232 233 229
  223 223 215 213 164 127 123 196 229   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0 183 225 216 223 228
  235 227 224 222 224 221 223 245 173   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0 193 228 218 213 198
  180 212 210 211 213 223 220 243 202   0]
 [  0   0   0   0   0   0   0   0   0   1   3   0  12 219 220 212 218 192
  169 227 208 218 224 212 226 197 209  52]
 [  0   0   0   0   0   0   0   0   0   0   6   0  99 244 222 220 218 203
  198 221 215 213 222 220 245 119 167  56]
 [  0   0   0   0   0   0   0   0   0   4   0   0  55 236 228 230 228 240
  232 213 218 223 234 217 217 209  92   0]
 [  0   0   1   4   6   7   2   0   0   0   0   0 237 226 217 223 222 219
  222 221 216 223 229 215 218 255  77   0]
 [  0   3   0   0   0   0   0   0   0  62 145 204 228 207 213 221 218 208
  211 218 224 223 219 215 224 244 159   0]
 [  0   0   0   0  18  44  82 107 189 228 220 222 217 226 200 205 211 230
  224 234 176 188 250 248 233 238 215   0]
 [  0  57 187 208 224 221 224 208 204 214 208 209 200 159 245 193 206 223
  255 255 221 234 221 211 220 232 246   0]
 [  3 202 228 224 221 211 211 214 205 205 205 220 240  80 150 255 229 221
  188 154 191 210 204 209 222 228 225   0]
 [ 98 233 198 210 222 229 229 234 249 220 194 215 217 241  65  73 106 117
  168 219 221 215 217 223 223 224 229  29]
 [ 75 204 212 204 193 205 211 225 216 185 197 206 198 213 240 195 227 245
  239 223 218 212 209 222 220 221 230  67]
 [ 48 203 183 194 213 197 185 190 194 192 202 214 219 221 220 236 225 216
  199 206 186 181 177 172 181 205 206 115]
 [  0 122 219 193 179 171 183 196 204 210 213 207 211 210 200 196 194 191
  195 191 198 192 176 156 167 177 210  92]
 [  0   0  74 189 212 191 175 172 175 181 185 188 189 188 193 198 204 209
  210 210 211 188 188 194 192 216 170   0]
 [  2   0   0   0  66 200 222 237 239 242 246 243 244 221 220 193 191 179
  182 182 181 176 166 168  99  58   0   0]
 [  0   0   0   0   0   0   0  40  61  44  72  41  35   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]
 [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0]]

###数据正则化

training_images=training_images/255.0
test_images=test_images/255.0
model=tf.keras.models.Sequential([tf.keras.layers.Flatten(),tf.keras.layers.Dense(128,activation=tf.nn.relu),tf.keras.layers.Dense(10,activation=tf.nn.softmax)])

###Sequential:在神经网络中定义了一系列的层
###Flatten:把图片变成一维数据集合
###Dense:增加一层神经单元
####每一层神经单元都需要一个激活函数(activation)来告诉它们要实现的功能是什么。
###Relu:实际上意味着“If X>0 return X, else return 0”,它所做的只是将0或者更大的值传递到网络的下一层
###Softmax:取一组值,选取它有效的最大值,将其保留下来,其他的可能就置零。例如[0.1, 0.1, 0.05, 0.1, 9.5, 0.1, 0.05, 0.05, 0.05]转换为[0,0,0,0,1,0,0,0,0]。保留特征,能够节省大量的编码。

##至此,模型的搭建已经完成,现在要做的就是去构建它,用优化器和损失函数去编译它,然后再用model函数去训练它就完事了。

model.compile(optimizer=tf.train.AdamOptimizer(),loss='sparse_categorical_crossentropy',metrics=['accuracy'])
model.fit(training_images,training_labels,epochs=5)
WARNING:tensorflow:From E:\anaconda3\Anaconda\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
Epoch 1/5
60000/60000 [==============================] - 4s 62us/sample - loss: 0.5034 - acc: 0.8238
Epoch 2/5
60000/60000 [==============================] - 4s 59us/sample - loss: 0.3800 - acc: 0.8627
Epoch 3/5
60000/60000 [==============================] - 4s 59us/sample - loss: 0.3404 - acc: 0.8766
Epoch 4/5
60000/60000 [==============================] - 4s 59us/sample - loss: 0.3155 - acc: 0.8846
Epoch 5/5
60000/60000 [==============================] - 4s 60us/sample - loss: 0.2978 - acc: 0.8891





<tensorflow.python.keras.callbacks.History at 0x1e93185ed30>

###疑问优化器optimizer和损失函数loss后面的值是根据什么标准来选取的呢?有类似手册一样可以查询如何使用的工具书嘛?
##model.evaluate:测试集步骤

model.evaluate(test_images,test_labels)
10000/10000 [==============================] - 0s 37us/sample - loss: 0.3500 - acc: 0.8774





[0.35001648069620134, 0.8774]

###acc:表示准确率,训练集中我们的准确率达到91%就算合格了。可以尝试着载多训练几次epochs稍微大点试试

#Exploration Exercise
##Exercise01
###下面一行代码为每个测试图像创建了一组分类,然后打印分类中的第一个条目,运行后的输出是一串数字,请问这数字代表着什么?

classifications=model.predict(test_images)
print(classifications[0])
[2.0767783e-04 6.7504152e-06 9.4396664e-06 2.7908434e-05 2.0306161e-05
 5.8333997e-02 7.6909571e-05 1.0126467e-01 3.8477127e-04 8.3966756e-01]

###提示:尝试运行print(test_labels[0])——您将得到一个9。

print(test_labels[0])
9

###Answer:代表0号测试图像在分成的十个类中可能是每一个类别的所占概率。(数据集中,衣服,裤子,鞋子。。。。十种类别)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值