Tensorflow是怎样运作的
1. 导入或生成数据集
2. 对数据进行标准化
3. 将数据集划分成三部分:训练集、测试集合验证(validation)集:验证集用于调整假设参数,以获取一组最好的假设参数
4. 设定算法参数
5. 初始化变量(Variable)和占位符(Placeholder)
6. 定义模型结构
7. 声明损失函数
8. 初始化并训练模型
9. 评估模型
10. 调整假设参数
11. 部署/预测新的输出
声明变量(Variable)和张量(Tensor)
固定张量:
创建一个由0填充的张量:
zero_tsr = tf.zeros([row_dim, col_dim])
创建一个由1填充的张量:
ones_tsr = tf.ones([row_dim, col_dim])
创建一个由常数填充的张量:
filled_tsr = tf.fill([row_dim, col_dim], 42)
创建一个张量类型的常数
constant_tsr = tf.constant([1,2,3])
序列张量:
linear_tsr = tf.linspace(start=0, stop=1, start=3)
integer_seq_tsr = tf.range(start=6, limit=15, delta=3)
随机张量:
randunif_tsr = tf.random_uniform([row_dim, col_dim],minval=0, maxval=1)
randnorm_tsr = tf.random_normal([row_dim, col_dim],mean=0.0,stddev=1.0)
truncnorm_tsr = tf.truncated_normal([row_dim, col_dim],mean=0.0, stddev=1.0)
# mean表示均值,stddev表示偏差
randnorm=tf.random_normal(shape=[1000],mean=0 ,stddev=1.)
randtrun=tf.truncated_normal(shape=[1000],mean=0,stddev=1.)
对比
shuffled_output = tf.random_shuffle(input_tensor)
cropped_image = tf.random_crop(my_image, [height/2, width/2,3])
使用占位符(Placeholder)和变量(Variable)
变量:就是算法中的那些参数,tenserflow框架会时刻追踪着那些变量,调整变量的值,使算法最优化。
placeholder:占位符,你可以往里面喂进制定类型和形状的张量。
代码
使用矩阵
//创建对角矩阵
identity_matrix = tf.diag([1.0, 1.0, 1.0])
//将数组转化为张量
D = tf.convert_to_tensor(np.array([[1., 2., 3.],[-3., -7.,-1.],[0., 5., -2.]]))
//两个矩阵相乘
tf.matmul(m1,m2)
//对矩阵进行转置操作
tf.transpose(m)
//计算矩阵所对应的行列式的值
tf.matrix_determinant(m)
//获取该矩阵的逆矩阵
tf.matrix_inverse(m)
//使用cholesky分解:一个对称正定矩阵可以表示成一个下三角矩阵L和其转置的乘积的分解
tf.cholesky(m)
//获取矩阵的特征值和特征向量
tf.self_adjoint_eig(m)
声明操作(Operation)
abs()
求输入tensor的绝对值
ceil()
对tensor进行向上取整
cos()
求tensor的cos值
exp()
求tensor以e为底的指数
floor()
对tensor进行向下取整
inv()
求tensor的倒数
log()
求tensor的自然对数
maximum()
选取两个tensor中较大的那个元素
minimum()
选取两个tensor中较小的那个元素
neg()
求tensor的负数
pow()
第一个tensor作为底数,第二个tensor作为指数
round()
获取tensor的约数,四舍五入
rsqrt()
求tensor的平方根到倒数
sign()
根据tensor的sign值返回-1,0,1
sin()
求tensor的sin值
sqrt()
求tensor的平方根
square()
求tensor的平方
squared_difference()
求两个tensor的差的平方
输出结果
实现激活函数
sigmod 类:
sigmod: 1/(1+exp(-x))
tanh: ((exp(x)- exp(-x))/(exp(x)+exp(-x))
softsign: x/(abs(x) + 1)
输出图像
ReLu 类:
softplus: log(exp(x) + 1)
ReLu: max(0,x)
ReLu6: min(max(0,x),6)
ExpLu(elu): (exp(x)-1) if x < 0 else x