tensorflow-求平均值的函数

求平均值的函数
reduce_mean
axis为1表示求行

axis为0表示求列

>>> xxx=tf.constant([[1., 10.],[3.,30.]])
>>> sess.run(xxx)
array([[  1.,  10.],
       [  3.,  30.]], dtype=float32)
>>> mymean=tf.reduce_mean(xxx,0)
>>> sess.run(mymean)
array([  2.,  20.], dtype=float32)
>>> mymean=tf.reduce_mean(xxx,1)
>>> sess.run(mymean)
array([  5.5,  16.5], dtype=float32)
>>> 

keep_dims表示是否保持维度。

>>> mymean=tf.reduce_mean(xxx,axis=0,keep_dims=True)
>>> sess.run(mymean)
array([[  2.,  20.]], dtype=float32)
>>> mymean=tf.reduce_mean(xxx,axis=0,keep_dims=False)
>>> sess.run(mymean)
array([  2.,  20.], dtype=float32)
>>> mymean=tf.reduce_mean(xxx,keep_dims=False)
>>> sess.run(mymean)
11.0
>>> mymean=tf.reduce_mean(xxx,keep_dims=True)
>>> sess.run(mymean)
array([[ 11.]], dtype=float32)
>>> mymean=tf.reduce_mean(xxx)
>>> sess.run(mymean)
11.0

tf.reduce_mean

reduce_mean(
    input_tensor,
    axis=None,
    keep_dims=False,
    name=None,
    reduction_indices=None
)

Defined in tensorflow/python/ops/math_ops.py.

See the guide: Math > Reduction

Computes the mean of elements across dimensions of a tensor.

Reduces input_tensor along the dimensions given in axis. Unless keep_dims is true, the rank of the tensor is reduced by 1 for each entry in axis. If keep_dims is true, the reduced dimensions are retained with length 1.

If axis has no entries, all dimensions are reduced, and a tensor with a single element is returned.

For example:

'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.]

Args:

input_tensor: The tensor to reduce. Should have numeric type.
axis: The dimensions to reduce. If None (the default), reduces all dimensions.
keep_dims: If true, retains reduced dimensions with length 1.
name: A name for the operation (optional).
reduction_indices: The old (deprecated) name for axis.
tf.pow

 
pow(
    x,
    y,
    name=None
)

Defined in tensorflow/python/ops/math_ops.py.

See the guide: Math > Basic Math Functions

Computes the power of one value to another.

Given a tensor x and a tensor y, this operation computes \(x^y\) for corresponding elements in x and y. For example:

tensor 'x' is [[2, 2], [3, 3]]

tensor 'y' is [[8, 16], [2, 3]]

tf.pow(x, y) ==> [[256, 65536], [9, 27]]

class tf.train.AdamOptimizer

init(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False, name='Adam')

线性分类源码:


#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Mon Jul 10 09:35:04 2017
@author: [email protected],http://blog.csdn.net/myhaspl"""
import tensorflow as tf
import numpy as np

batch_size=10
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))

x=tf.placeholder(tf.float32,shape=(None,2),name="x")
y=tf.placeholder(tf.float32,shape=(None,1),name="y")

h=tf.matmul(x,w1)
yo=tf.matmul(h,w2)

#损失函数计算差异平均值
cross_entropy=tf.reduce_mean(tf.abs(y-yo))
#反向传播
train_step=tf.train.AdamOptimizer().minimize(cross_entropy)

#生成200个随机样本
DATASIZE=200
x_=np.random.rand(DATASIZE,2)
y_=[[int((x1+x2)>2.5)] for (x1,x2) in x_]

with tf.Session() as sess:
    #初始化变量
    init_op=tf.global_variables_initializer()
    sess.run(init_op)
    print sess.run(w1)
    print sess.run(w2)

    #设定训练轮数
    TRAINCOUNT=10000
    for i in range(TRAINCOUNT):
        #每次递进选择一组
        start=(i*batch_size) % DATASIZE
        end=min(start+batch_size,DATASIZE)
        #开始训练
        sess.run(train_step,feed_dict={x:x_[start:end],y:y_[start:end]})
        if i%1000==0:
            total_cross_entropy=sess.run(cross_entropy,feed_dict={x:x_[start:end],y:y_[start:end]})
            print("%d 次训练之后,损失:%g"%(i+1,total_cross_entropy))
    print(sess.run(w1))
    print(sess.run(w2))

    [[-0.81131822  1.48459876  0.06532937 -2.4427042   0.0992484   0.59122431]
 [ 0.59282297 -2.12292957 -0.72289723 -0.05627038  0.64354479 -0.26432407]]
[[-0.81131822]
 [ 1.48459876]
 [ 0.06532937]
 [-2.4427042 ]
 [ 0.0992484 ]
 [ 0.59122431]]
1 次训练之后,损失:2.37311
1001 次训练之后,损失:0.587702
2001 次训练之后,损失:0.00187977
3001 次训练之后,损失:0.000224713
4001 次训练之后,损失:0.000245593
5001 次训练之后,损失:0.000837345
6001 次训练之后,损失:0.000561878
7001 次训练之后,损失:0.000521504
8001 次训练之后,损失:0.000369141
9001 次训练之后,损失:2.88023e-05
[[-0.40749896  0.74481744 -1.35231423 -1.57555723  1.5161525   0.38725093]
 [ 0.84865922 -2.07912779 -0.41053897 -0.21082011 -0.0567192  -0.69210052]]
[[ 0.36143586]
 [ 0.34388798]
 [ 0.79891819]
 [-1.57640576]
 [-0.86542428]
 [-0.51558757]]

tf.nn.relu

 
relu(
    features,
    name=None
)

Defined in tensorflow/python/ops/gen_nn_ops.py.

See the guides: Layers (contrib) > Higher level ops for building neural network layers, Neural Network > Activation Functions

Computes rectified linear: max(features, 0)

猜你喜欢

转载自blog.51cto.com/13959448/2327987