机器学习0004 Tensorflow中产生tensor的函数


机器学习0004 Tensorflow中产生tensor的函数


最近在学习tensorflow,学习过程中有好多不懂的,产生tensor就是其中之一,下面是今天整理的,所有内容都在代码和注释中,其他废话不多说。

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


import tensorflow as tf
import numpy as np

sess=tf.Session()

#1.tf.ones
#产生形状为shape,类型为dtype,名字是name,所有值是“1”的tensor
a=tf.ones(shape=[2,3], dtype=tf.float32,name=None)
print(sess.run(a))
print('#'*40)#华丽分割线
# [[ 1.  1.  1.]
#  [ 1.  1.  1.]]
########################################

#2.tf.zeros
#产生形状为shape,类型为dtype,名字是name,所有值是“0”的tensor
a=tf.zeros(shape=[2,3], dtype=tf.float32,name=None)
print(sess.run(a))
print('#'*40)#华丽分割线
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]
########################################

#3.tf.ones_like
#产生一个tensor形状的,类型是dtype,所有值是“1”的tensor
vec=[[1,2,3,4],[5,6,7,8]]
a=tf.ones_like(tensor=vec, dtype=tf.float32, name=None, optimize=True)
print(sess.run(a))
print('#'*40)#华丽分割线
# [[ 1.  1.  1.  1.]
#  [ 1.  1.  1.  1.]]
########################################

#4.tf.zeros_like
#产生一个tensor形状的,类型是dtype,所有值是“0”的tensor
a=tf.zeros_like(tensor=a, dtype=tf.float32, name=None, optimize=True)
print(sess.run(a))
print('#'*40)#华丽分割线
# [[ 0.  0.  0.  0.]
#  [ 0.  0.  0.  0.]]
########################################

#5.tf.fill
#产生一个形状是dims,所有值是value的tensor
a=tf.fill(dims=[2,3], value=3.14159, name=None)
print(sess.run(a))
print('#'*40)#华丽分割线
# [[ 3.14159012  3.14159012  3.14159012]
#  [ 3.14159012  3.14159012  3.14159012]]
########################################

#6.tf.constant
#产生一个形状是shape,类型是dtype,值是value的常量tensor,这个有点难解释,看下方运行结果
#(1)
a=tf.constant(value=88, dtype=tf.float32, shape=[6], name=None)
print(sess.run(a))
# [ 88.  88.  88.  88.  88.  88.]
#(2)
a=tf.constant(value=[88,99], dtype=tf.float32, shape=[6], name=None)
print(sess.run(a))
# [ 88.  99.  99.  99.  99.  99.]
#(3)
a=tf.constant(value=[88,99,11,22,33,44], dtype=tf.float32, shape=[6], name=None)
print(sess.run(a))
# [ 88.  99.  11.  22.  33.  44.]
#(4)
#a=tf.constant(value=[88,99,11,22,33,44,55,66,77], dtype=tf.float32, shape=[6], name=None)
#print(sess.run(a))
# ValueError: Too many elements provided. Needed at most 6, but received 9  直接报错
#(5)
a=tf.constant(value=88, dtype=tf.float32, shape=[2,3], name=None)
print(sess.run(a))
# [[ 88.  88.  88.]
#  [ 88.  88.  88.]]
#(6)
a=tf.constant(value=[1,2], dtype=tf.float32, shape=[2,3], name=None)
print(sess.run(a))
# [[ 1.  2.  2.]
#  [ 2.  2.  2.]]
#(7)
a=tf.constant(value=[1,2,3], dtype=tf.float32, shape=[2,3], name=None)
print(sess.run(a))
# [[ 1.  2.  3.]
#  [ 3.  3.  3.]]
#(8)
a=tf.constant(value=[1,2,3,4,5,6], dtype=tf.float32, shape=[2,3], name=None)
print(sess.run(a))
print('#'*40)#华丽分割线
# [[ 1.  2.  3.]
#  [ 4.  5.  6.]]
########################################

#7.tf.random_normal
#和这个类似的还有:
#tf.truncated_nomal 截断正态分布,产生的值在[mean-2*dev,mean+2*dev]区间内
#tf.random_uniform 平均分布
#tf.random_gamma 伽马分布
#tf.random_poisson 泊松分布
#产生一个形状是shape,均值是mean的,标准差是stddev,类型是dtype的值符合正态分布的tensor
a=tf.random_normal(shape=[2,3], mean=0, stddev=2.0, dtype=tf.float32, seed=None, name=None)
b=sess.run(a)
print(b)
print("mean=",np.mean(b,keepdims=False))#计算平均值
print("stddev=",np.std(b,keepdims=False))#计算标准差
#注意:以下结果仅供参考,每次产生的都不太一样,产生的值服从正态分布,当经过大量的数据后,效果会更稳定
# [[-1.06130075  3.85585999  2.9854815 ]
#  [-1.93925571  2.28367829 -2.51560712]]
# mean= 0.601476
# stddev= 2.51796
a=tf.random_normal(shape=[5000], mean=0, stddev=2.0, dtype=tf.float32, seed=None, name=None)
b=sess.run(a)
print("mean=",np.mean(b,keepdims=False))#计算平均值
print("stddev=",np.std(b,keepdims=False))#计算标准差
print('#'*40)#华丽分割线
#下面是经过产生5000个数据的某几次运行结果,mean趋近于0 ,std趋近于2.0
#mean= -0.0181304 stddev= 1.97549  
#mean= 0.0371914 stddev= 2.00946
#mean= -0.0146296 stddev= 1.98888
########################################

#8.tf.random_shuffle
#随机打乱,只对一维有效
a=tf.random_shuffle(value=[1,2,3,4,5,6,7,8,9,10], seed=None, name=None)
b=tf.random_shuffle(value=[[1,2,3,4,5],[6,7,8,9,10]], seed=None, name=None)
print(sess.run(a))
print(sess.run(b))
print('#'*40)#华丽分割线
#[ 9  5  2  3  7  1  8 10  6  4]
# [[ 1  2  3  4  5]
#  [ 6  7  8  9 10]]
########################################

#9.tf.random_crop
#随机裁剪,产生一个形状为size的tensor,从value中随机选取连续的形状为size的区域进行剪裁
a=tf.random_crop(value=[1,2,3,4,5,6,7,8,9,10], size=[4],seed=None, name=None)
print(sess.run(a))
print('#'*40)#华丽分割线
# [6 7 8 9] 也可能是 [5 6 7 8] [4 5 6 7]等等
########################################

sess.close()












猜你喜欢

转载自blog.csdn.net/moluth/article/details/78489951
今日推荐