Tensorflow学习:使用Tensorflow搭建深层网络分类器
2017-03-08 09:53
507 查看
前言
根据官方文档整理而来的,主要是对Iris数据集进行分类。使用tf.contrib.learn.tf.contrib.learn快速搭建一个深层网络分类器,步骤
导入csv数据搭建网络分类器
训练网络
计算测试集正确率
对新样本进行分类
数据
Iris数据集包含150行数据,有三种不同的Iris品种分类。每一行数据给出了四个特征信息和一个分类信息。现在已经将数据分为训练集和测试集
- A training set of 120 samples (iris_training.csv)
- A test set of 30 samples (iris_test.csv)
网络搭建
1. 首先,导入tensorflow 和 numpy
from __future__ import absolute_import from __future__ import division from __future__ import print_function import tensorflow as tf import numpy as np
2. 导入数据
# 定义数据地址 IRIS_TRAINING = "iris_training.csv" IRIS_TEST = "iris_test.csv" # 导入数据 training_set = tf.contrib.learn.datasets.base.load_csv_with_header( filename=IRIS_TRAINING, target_dtype=np.int, features_dtype=np.float32) test_set = tf.contrib.learn.datasets.base.load_csv_with_header( filename=IRIS_TEST, target_dtype=np.int, features_dtype=np.float32)
load_csv_with_header() 有三个参数
- filename, 数据地址
- target_dtype, 目标值的numpy datatype(iris的目标值是0,1,2,所以是np.int)
- features_dtype, 特征值的numpy datatype .
3. 搭建网络结构
# 每行数据4个特征,都是real-value的 feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)] # 3层DNN,3分类问题 classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns, hidden_units=[10, 20, 10], n_classes=3, model_dir="/tmp/iris_model")
参数解释
- feature_columns 特征值
- hidden_units=[10, 20, 10]. 3个隐藏层,包含的隐藏神经元依次是10, 20, 10
- n_classes 类别个数
- model_dir 模型保存地址
4. 训练数据
classifier.fit(x=training_set.data, y=training_set.target, steps=2000)
steps 为训练次数
5. 计算准确率
accuracy_score = classifier.evaluate(x=test_set.data, y=test_set.target)["accuracy"] print('Accuracy: {0:f}'.format(accuracy_score))
运行结果是
Accuracy: 0.966667
6. 对新样本进行预测
# Classify two new flower samples. new_samples = np.array( [[6.4, 3.2, 4.5, 1.5], [5.8, 3.1, 5.0, 1.7]], dtype=float) y = list(classifier.predict(new_samples, as_iterable=True)) print('Predictions: {}'.format(str(y)))
运行结果为:
Prediction: [1 2]
完整代码
from __future__ import absolute_import from __future__ import division from __future__ import print_function import tensorflow as tf import numpy as np
IRIS_TRAINING = "iris_training.csv"
IRIS_TEST = "iris_test.csv"
training_set = tf.contrib.learn.datasets.base.load_csv_with_header(
filename=IRIS_TRAINING,
target_dtype=np.int,
features_dtype=np.float32)
test_set = tf.contrib.learn.datasets.base.load_csv_with_header(
filename=IRIS_TEST,
target_dtype=np.int,
features_dtype=np.float32)
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]
classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
hidden_units=[10, 20, 10],
n_classes=3,
model_dir="/tmp/iris_model")
classifier.fit(x=training_set.data,
y=training_set.target,
steps=2000)
accuracy_score = classifier.evaluate(x=test_set.data,
y=test_set.target)["accuracy"]
print('Accuracy: {0:f}'.format(accuracy_score))
new_samples = np.array(
[[6.4, 3.2, 4.5, 1.5], [5.8, 3.1, 5.0, 1.7]], dtype=float)
y = list(classifier.predict(new_samples, as_iterable=True))
print('Predictions: {}'.format(str(y)))
参考
tf.contrib.learn Quickstarttf.contrib.learn API
相关文章推荐
- TFboys:使用Tensorflow搭建深层网络分类器
- TFboys:使用Tensorflow搭建深层网络分类器
- 深度学习——利用学习框架TensorFlow搭建深层神经网络DNN
- Tensorflow搭建神经网络及使用Tensorboard进行可视化
- iOS学习笔记-141.网络01——使用Tomcat和JavaWeb来搭建自己的网络接口
- 深度学习实践系列(3)- 使用Keras搭建notMNIST的神经网络
- 深度学习-传统神经网络使用TensorFlow框架实现MNIST手写数字识别
- 【TensorFlow深度学习框架教程四】深层神经网络
- 使用腾讯云 GPU 学习深度学习系列之三:搭建深度神经网络
- DeepLearing学习笔记-改善深层神经网络(第三周作业-TensorFlow使用)
- 从自我学习到深层网络——建立你的第1个深度网络分类器
- TensorFlow学习笔记5:神经网络搭建
- TensorFlow学习笔记6:神经网络搭建(layer,estimator等)
- 【懒懒的Tensorflow学习笔记三之搭建简单的神经网络模型】
- 对比学习用 Keras 搭建 CNN RNN 等常用神经网络和其后端切换(Theano和TensorFlow)
- 理解深层神经网络中的迁移学习及TensorFlow实现
- 使用Amazon AWS搭建GPU版tensorflow深度学习环境
- 【从零开始学习Tensorflow】(二)第4章 深层神经网络
- 从自我学习到深层网络——建立你的第1个深度网络分类器
- TensorFlow迁移学习-使用谷歌训练好的Inception-v3网络进行分类