集智专栏
资源加载中,请稍后...
集智专栏

[2018.01.14] “女生科技体验节” TensorFlow Workshop

Kaiser

上周日在北航南边的丽亭华苑酒店举办了一个“女生科技体验节”(注意是“体验”不是“体检”),主办方找我去主持了一个workshop。

这个workshop译为“工作坊”,感觉不如直译叫“功店”,还正好契合女性主题,来的都是公举。


现场挺热闹,后排还有很多加座没桌子的朋友(也有部分男生,可能是家属)。


显示屏很亮,所以我就变成了一个黑人,呈喊麦和打碟的手势。




上图里的MNIST可能很多人已经熟悉了,但是他已经不适合这个版本了。这次用的是穿上了滑板鞋的MNIST,Fashion-MNIST。

看这个架势是不是有点像吃鸡里开箱子?

跟初代目MNIST一样,Fashion-MNIST也是一堆28x28的小图片,分为10个类别,其中训练集55000个,测试集(其实是验证集)10000个。现场讲解的基于TensorFlow的分类程序如下:




1. 预处理

程序说明
预处理
预处理代码
#!mkdir fashion-mnist #!cp //mnt/vol0/tensorflow/fashion-mnist/* ~/work/fashion-mnist/ !cp /mnt/vol0/tensorflow/fashion-mnist/fashion-mnist_train.csv ~/work !cp /mnt/vol0/tensorflow/fashion-mnist/fashion-mnist_test.csv ~/work
示例代码
import numpy as np import pandas as pd import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # 导入数据集 base_model_dir = "tfmodels/fasion_mnist/" #fashion_mnist = input_data.read_data_sets("fashion-mnist") # 为节省线上运行时间,这里只读取了10000个训练样本和2000个测试样本 data_train = pd.read_csv('fashion-mnist_train.csv', nrows=10000) data_test = pd.read_csv('fashion-mnist_test.csv', nrows=2000) # 定义特征列 feature_columns = [tf.feature_column.numeric_column( "pixels", shape=784)]
程序验证过程
True


2. 训练分类器

程序说明
训练分类器
示例代码
def make_input_fn(data, batch_size, num_epochs, shuffle): return tf.estimator.inputs.numpy_input_fn( x={'pixels': data[0:, 1:]}, y=data[:,0].astype(np.int64), batch_size=batch_size, num_epochs=num_epochs, shuffle=shuffle) # 分类器 classifier = tf.estimator.LinearClassifier( feature_columns=feature_columns, n_classes=10, model_dir=base_model_dir + "linear")
程序验证过程
True


程序说明
启动训练
示例代码
# 训练 classifier.train(input_fn=make_input_fn(data_train, batch_size=100, num_epochs=2, shuffle=True))
程序验证过程
True


3. 评估模型

程序说明
评估模型
示例代码
accuracy_score = classifier.evaluate( input_fn=make_input_fn( data_test, batch_size=100, num_epochs=1, shuffle=False))['accuracy'] print("Accuracy: {}".format(accuracy_score))
程序验证过程
True


以上是最简单的线性分类器,接着试试神经网络:

程序说明
神经网络
示例代码
deep_classifier = tf.estimator.DNNClassifier( feature_columns=feature_columns, n_classes=10, hidden_units=[100, 75, 50], model_dir=base_model_dir + "deep" ) deep_classifier.train(input_fn=make_input_fn(data_train, batch_size=100, num_epochs=2, shuffle=True)) accuracy_score = deep_classifier.evaluate( input_fn=make_input_fn( data_test, batch_size=100, num_epochs=1, shuffle=False))['accuracy'] print("Accuracy: {}".format(accuracy_score))
程序验证过程
True


你会发现神经网络的预测准确度好像还不如最初级的线性分类器,一个可能的原因是数据量过小(只取了原始数据集的约1/5),稍微复杂的模型反而容易过拟合。

实地测试一下预测器的准确度:

程序说明
Inference
示例代码
predict_input_fn = tf.estimator.inputs.numpy_input_fn( x={'pixels': data_test[1000:1005, 1:]}, batch_size=1, num_epochs=1, shuffle=False) predictions = deep_classifier.predict(input_fn=predict_input_fn) # 进行预测 for prediction in predictions: print("Predictions: {} with probabilities {}\n".format( prediction["classes"], prediction["probabilities"])) print('Expected answers values: {}'.format( data_test[1000:1005, 0])) # 可视化真实结果 import matplotlib.pyplot as plt %matplotlib inline for i in range(1000,1005): sample = np.reshape(data_test[i, 1:], (28,28)) plt.figure() plt.title("Correct label: {}".format(data_test[i, 0].astype(np.int))) plt.imshow(sample, 'gray')
程序验证过程
True

您也许喜欢这些文章

集智专栏

一起来画像素画,我家的马赛克不可能这么萌!

发表至趣味项目
像素艺术以及像素图形设计是计算机图形学发展历程中的一项重要产物,也是现代设计艺术的一个重要流派。在视频游戏领域以及平面设计领域,像素艺术都有着深远的影响力。本文将简要介绍像素艺术的起源和发展历程,以及几种简单的像素图形设计方法。
集智专栏

视频翻译:深度学习处理服饰图片识别

发表至趣味项目
在本节的AI之旅视频教程中,来自Google的Yufeng会通过使用一个时尚相关的数据集来完成训练的例子,来向我们一步步介绍如何使用深度学习以及TensorFlow等机器学习工具完成一个完整的训练-评估过程。
集智专栏

深度学习环境搭建手册——安装Nvidia、Cuda、CuDNN、TensorFlow以及Keras

发表至数据科学
本文简要介绍了在Ubuntu系统上搭建基于GPU的深度学习运行环境所需要的各类深度学习驱动、工具以及软件包的安装流程和注意事项。

文章评论(3)

新用户197 发表于 8月前回复
回复Kaiser:如果刷新过网页的话,需要重新运行第一个代码块“预处理”,导入文件。
我是把程序复制 放在avocado里面运行的 所以没有包含“预处理” 文件 能不能提供一下呀长者!
Kaiser集智 站长 发表于 8月前回复
回复新用户197:上面程序不能运行 缺少csv文件!
如果刷新过网页的话,需要重新运行第一个代码块“预处理”,导入文件。
新用户197 发表于 8月前回复
上面程序不能运行 缺少csv文件!