码迷,mamicode.com
首页 > 其他好文 > 详细

『TensorFlow』简单的数学计算&张量操作

时间:2017-08-26 20:45:50      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:out   数学计算   分布   tdd   分类器   矩阵   oba   truncated   直接   

tf.pow()

tf.sqrt()

tf.add()

tf.add_n()

tf.subtract()        :减法

tf.matmul()         :矩阵乘法

tf.reduce_sum()  :求和

tf.reduce_mean():求均值,直接给源码定义中的注释

For example:
  ```python
  # ‘x‘ is [[1., 1.]
  #         [2., 2.]]
  tf.reduce_mean(x) ==> 1.5
  tf.reduce_mean(x, 0) ==> [1.5, 1.5]
  tf.reduce_mean(x, 1) ==> [1.,  2.]
  ```
reduction_indices: The old (deprecated) name for axis.

tf.cast():

bool->数字

re = tf.cast([True,False],tf.float32)
sess = tf.Session()
sess.run(re)
# Out[6]: 
# array([ 1.,  0.], dtype=float32)

tf.argmax:

(list,维度)

re = tf.argmax([[0,0.5]],1)
sess.run(re)
# Out[20]: 
# array([1])

 tf.squeeze():

数据降维,只裁剪等于1的维度

不指定维度则裁剪所有长度为1的维度

import tensorflow as tf

arr = tf.Variable(tf.truncated_normal([3,4,1,6,1], stddev=0.1))

sess = tf.Session()
sess.run(tf.global_variables_initializer())

sess.run(arr).shape
# Out[12]: 
# (3, 4, 1, 6, 1)
sess.run(tf.squeeze(arr,[2,])).shape
# Out[17]: 
# (3, 4, 6, 1)
sess.run(tf.squeeze(arr,[2,4])).shape
# Out[16]: 
# (3, 4, 6)
sess.run(tf.squeeze(arr)).shape
# Out[19]: 
# (3, 4, 6)

tf.nn.softmax()分类器:

把数组最后一维转化为概率分布

import  tensorflow as tf  
sess.run(tf.nn.softmax([1.,2.,3.,4.]))
# Out[12]: 
# array([ 0.0320586 ,  0.08714432,  0.23688281,  0.64391422], dtype=float32)
sess.run(tf.nn.softmax([1.,1.,1.,1.]))
# Out[13]: 
# array([ 0.25,  0.25,  0.25,  0.25], dtype=float32)
sess.run(tf.nn.softmax([[1.,1.,1.,1.],[7.,1.,1.,1.]]))
# Out[16]: 
# array([[ 0.25      ,  0.25      ,  0.25      ,  0.25      ],
#        [ 0.99261862,  0.00246046,  0.00246046,  0.00246046]], dtype=float32)

 tf.concat([t1,t2,t3...],dim):

矩阵拼接,注意在1.x版本之前和之后dim和[t]的顺序是改变了的

这个函数乍看之下不好理解合成方向,实际把合成张量转化为np数组查看shape后就很好理解了:

import tensorflow as tf
import numpy as np
t1 = np.asarray([[1, 2, 3], [4, 5, 6]])
t2 = np.asarray([[7, 8, 9], [10, 11, 12]])
print(t1.shape)
# (2, 3)
# 第零维度合成就是扩展数字2的大小
re = tf.concat([t1, t2],0) 
sess = tf.Session()
sess.run(re)
# array([[ 1,  2,  3],
#        [ 4,  5,  6],
#        [ 7,  8,  9],
#        [10, 11, 12]])

# 第一维度合成就是扩展数字3的大小
re = tf.concat([t1, t2],1) 
sess = tf.Session()
sess.run(re)
# array([[ 1,  2,  3,  7,  8,  9],
#        [ 4,  5,  6, 10, 11, 12]])

t1 = np.zeros([2,3,3])
t2 = np.ones([2,3,3])
print(t1,‘\n\n‘,t2)
re = tf.concat([t1, t2],2) 
sess = tf.Session()
sess.run(re)

# 第二维度合成就是扩展末尾的数字3的大小
# array([[[ 0.,  0.,  0.,  1.,  1.,  1.],
#         [ 0.,  0.,  0.,  1.,  1.,  1.],
#         [ 0.,  0.,  0.,  1.,  1.,  1.]],

#        [[ 0.,  0.,  0.,  1.,  1.,  1.],
#         [ 0.,  0.,  0.,  1.,  1.,  1.],
#         [ 0.,  0.,  0.,  1.,  1.,  1.]]])

作为参考合成神经网络输出的时候在深度方向(inception_v3)是数字3,[batch,heigh,width,depth]。

『TensorFlow』简单的数学计算&张量操作

标签:out   数学计算   分布   tdd   分类器   矩阵   oba   truncated   直接   

原文地址:http://www.cnblogs.com/hellcat/p/7436197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!