【Tensorflow】小白入门实战基础篇(下)

import tensorflow as tf
import numpy as np

sess = tf.Session()

# 一、矩阵运算

# div返回的是商的向下取整 数据类型与输入数据类型一致
print(sess.run(tf.div(3,4)))
# truediv在除法前强制转换整数为浮点数
print(sess.run(tf.truediv(3,4)))
# 对浮点数进行整数除法,可以使用floordiv()函数。
# 注意,此函数也返回浮点数结果,但是其会向下舍去小数位到最近的整数
print(sess.run(tf.floordiv(3.0,4.0)))
# 另外一个重要的函数是mod()(取模)。此函数返回除法的余数
print(sess.run(tf.mod(22.0,5.0)))
# 通过cross()函数计算两个张量间的点积。
# 记住,点积函数只为三维向量定义,所以cross()函数以两个三维张量作为输入
print(sess.run(tf.cross([1.,0.,0.],[0.,1.,0.])))

# 二、实现激励函数
# 激励函数是神经网络引入的非线性部分,并需要知道在什么位置使用激励函数。
# ①如果激励函数的取值范围在0和1之间,比如sigmoid激励函数,
# 那计算图输出结果也只能在0到1之间取值。
# ②如果激励函数隐藏在节点之间,
# 就要意识到激励函数作用于传入的张量的影响。
# ③如果张量要缩放为均值为0,
# 就需要使用激励函数使得尽可能多的变量在0附近。
# 这暗示我们选用(tanh)函数或者softsign函数。

# 1. 整流线性单元ReLU=max(0,x)连续但不平滑
print(sess.run(tf.nn.relu([-3.,3.,10.])))
# [ 0.  3. 10.]

# 2. ReLU6=min(max(0,x),6)用来抵消ReLU的线性增长的部分
# hard-sigmod函数的变种,运行速度快,解决梯度消失
print(sess.run(tf.nn.relu6([-3.,3,10])))
# [0. 3. 6.]

# 3. sigmod=1/1+(exp(-x))∈[-1,1]是最常用的连续平滑的激励函数也被成为逻辑函数
# 由于在机器学习训练过程中反向传播项趋近于0,因此不怎么使用
print(sess.run(tf.nn.sigmoid([-1.,0.,1.])))
#[0.26894143 0.5        0.7310586 ]

# 4. tanh=((exp(x)-exp(-x))/(exp(x)+exp(-x))双曲正切函数∈[0,1]曲线类似于sigmoid
print(sess.run(tf.nn.tanh([-1.,0.,1.])))

# 5. softsign=x/(abs(x)+1) 是符号函数的连续估计(-1,1)
print(sess.run(tf.nn.softsign([-1.,0.,-1.])))

# 6. softplus激励函数是ReLU激励函数的平滑版(0,∞)
# 表达式为:log(exp(x)+1)
print(sess.run(tf.nn.softplus([-1.,0.,-1.])))
# 当输入增加时,softplus激励函数趋近于∞,softsign函数趋近于1;
# 当输入减小时,softplus激励函数趋近于0,softsign函数趋近于-1。

# 7. ELU激励函数与softplus激励函数相似
# 不同点在于:当输入无限小时,ELU激励函数趋近于-1,而softplus激励函数趋近于0
# 表达式为(exp(x)+1) if x<0 else x
print(sess.run(tf.nn.elu([-1.,0.,-1.])))

# 三、读取数据源

# 1.鸢尾花数据集
from sklearn import datasets
iris = datasets.load_iris() # 鸢尾花数据集
print(len(iris.data)) # 150 特征
print(len(iris.target)) # 150 标签
print(iris.data[0]) # [5.1 3.5 1.4 0.2]
print(set(iris.target)) # {0, 1, 2}

# 2.出生体重数据
birth_url = 'https://www.umass.edu/statdata/statdata/data/lowbwt.dat'

# 3.波士顿房价
house_url='https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data'
house_header = ['CRIM','ZN','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX','PTRATIO','B','LSTAT','MEDV0']

# 4. MNIST手写字体库 要*才能访问
# from tensorflow.examples.tutorials.mnist import input_data
# mnist = input_data.read_data_sets("MNIST_data/",one_hot=True)
# print(len(mnist.test.images))
# print(len(mnist.train.images))
# print(len(mnist.validation.images))
# print(mnist.train.labels[1,:])

# 5. 电影数据集
file_url ='http://www.cs.cornell.edu/people/pabo/movie-review-data/'
# 6. 垃圾短信
message_url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/00228/smsspamcollection.zip'
# 7. 莎士比亚文本数据集
text_url = 'http://gutenberg.org/cache/epub/100/pg100.txt'
# 8. 翻译样本集
sentence_url = 'http://www.manythings.org/anki/deu-eng.zip'
上一篇:今日总结:集合接口


下一篇:Python+Android进行TensorFlow开发