zoukankan      html  css  js  c++  java
  • Tensorflow方法介绍

    一、reduce系列函数(维度操作)

    1、tf.reduce_sum( input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None ) //求和
    input_tensor:表示输入
    axis:表示在那个维度进行sum操作。
    keep_dims:表示是否保留原始数据的维度,False相当于执行完后原始数据就会少一个维度。
    reduction_indices:为了跟旧版本的兼容,现在已经不使用了。

    # 'x' is [[1, 1, 1]
    #         [1, 1, 1]]
    tf.reduce_sum(x) ==> 6
    tf.reduce_sum(x, 0) ==> [2, 2, 2]
    tf.reduce_sum(x, 1) ==> [3, 3]
    tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]]
    tf.reduce_sum(x, [0, 1]) ==> 6

    2、tf.reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None)//求平均值

    input_tensor:表示输入
    axis:表示在那个维度进行sum操作。
    keep_dims:表示是否保留原始数据的维度,False相当于执行完后原始数据就会少一个维度。

    # 'x' is [[1., 2.]
    #         [3., 4.]]
    tf.reduce_mean(x) ==> 2.5 #如果不指定第二个参数,那么就在所有的元素中取平均值
    tf.reduce_mean(x, 0) ==> [2.,  3.] #指定第二个参数为0,则第一维的元素取平均值,即每一列求平均值
    tf.reduce_mean(x, 1) ==> [1.5,  3.5] #指定第二个参数为1,则第二维的元素取平均值,即每一行求平均值

    3、tf.reduce_max(input_tensor, reduction_indices=None, keep_dims=False, name=None) //求最大值

    # 'x' is [[1., 2.]
    #         [3., 4.]]
    tf.reduce_max(x) ==> 4 #如果不指定第二个参数,那么就在所有的元素中取最大值
    tf.reduce_max(x, 0) ==> [3.,  4.] #指定第二个参数为0,则第一维的元素取最大值,即每一列求最大值
    tf.reduce_max(x, 1) ==> [2,  4] #指定第二个参数为1,则第二维的元素取最大值,即每一行求最大值

    4、tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

    参数:
    shape: 一维的张量,也是输出的张量。
    mean: 正态分布的均值。
    stddev: 正态分布的标准差。
    dtype: 输出的类型。
    seed: 一个整数,当设置之后,每次生成的随机数都一样。
    name: 操作的名字

    5、tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

    从正态分布中输出随机值。
    参数:

    shape: 一维的张量,也是输出的张量。
    mean: 正态分布的均值。
    stddev: 正态分布的标准差。
    dtype: 输出的类型。
    seed: 一个整数,当设置之后,每次生成的随机数都一样。
    name: 操作的名字。

    -------------------------代码--------------
    a = tf.Variable(tf.random_normal([2,2],seed=1))
    b = tf.Variable(tf.truncated_normal([2,2],seed=2))
    init = tf.global_variables_initializer()
    with tf.Session() as sess:
    sess.run(init)
    print(sess.run(a))
    print(sess.run(b))

    输出:
    [[-0.81131822 1.48459876]
    [ 0.06532937 -2.44270396]]
    [[-0.85811085 -0.19662298]
    [ 0.13895047 -1.22127688]]

    ---------------------------------------------------------

     二、其他方法

    1、tf.matmul(x,y)

    x,y矩阵做乘法

    2、tf.nn.softmax()//线性代价函数

    3、tf.nn.softmax_cross_entropy_with_logits()//表示softmax配合交叉熵函数

    4、tf.nn.sigmod_cross_entropy_with_logits()//表示sigmod配合交叉熵函数

    5、#在tensorflow1.2中tf.nn.tanh和tf.tanh都可以

    tanh是双曲函数中的一个,tanh()为双曲正切。双曲正切函数的导数公式:

    input=tf.constant([1,2,3,4],dtype=tf.float32)
    #在tensorflow1.2中tf.nn.tanh和tf.tanh都可以
    #output=tf.nn.tanh(input)
    output=tf.tanh(input)
    with tf.Session() as sess:
        print(sess.run(output))
        sess.close()

    输出结果:
    [ 0.76159418  0.96402758  0.99505472  0.99932921]

    6、tf.cast(a,dtype=tf.bool)

    f.cast(a,dtype=tf.bool)
    将x的数据格式转化成dtype.例如,原来x的数据格式是bool
    a = tf.Variable([1,0,0,1,1])
    b = tf.cast(a,dtype=tf.bool)
    sess = tf.Session()
    sess.run(tf.initialize_all_variables())
    print(sess.run(b))
    #[ True False False  True  True]

    7、tf.argmax(y,1)
    #首先,明确一点,tf.argmax可以认为就是np.argmax。tensorflow使用numpy实现的这个API。
    #tf.argmax就是返回最大的那个数值所在的下标。
    #argmax返回一维张量中最大的值所在的位置
    test = np.array([[1, 2, 3], [2, 3, 4], [5, 4, 3], [8, 7, 2]])
    np.argmax(test, 0) #输出:array([3, 3, 1]
    np.argmax(test, 1) #输出:array([2, 2, 0, 0]

    源码获取方式,关注公总号RaoRao1994,查看往期精彩-所有文章,即可获取资源下载链接

    更多资源获取,请关注公总号RaoRao1994

  • 相关阅读:
    机器学习笔记之K近邻算法
    [C++基础]在子类中向父类的构造函数传递参数的小例子,包括类中常量的初始化
    POJ2709 染料贪心
    POJ2337 欧拉路径字典序输出
    POJ2337 欧拉路径字典序输出
    POJ1042 贪心钓鱼
    POJ3228二分最大流
    POJ3228二分最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
  • 原文地址:https://www.cnblogs.com/raorao1994/p/8018330.html
Copyright © 2011-2022 走看看