1. tensorflow的安装
在【Anaconda Prompt】中输入【anaconda search -t conda tensorflow】,它帮我们找到可以安装的什么样的tensorflow, 需要注意查看version版本& platform平台;选择合适的版本再输入【anaconda show ......】,其中 ......为tensorflow版本,这个show会查找出安装tensorflow需要什么样的命令,把显示的命令直接复制粘贴,再回车,就开始了安装tensorflow.
或者用【pip install tensorflow】,或者【conda install tensorflow】
2. 导入tensorflow,求解y=w*x的值
在tensorflow中,最好用float32,否则容易出现各种未知错误。
import tensorflow as tf
a = 3
# Create a variable.给变量找到位置,除此外还要session
w = tf.Variable([[0.5,1.0]])
x = tf.Variable([[2.0],[1.0]])
y = tf.matmul(w, x) #y是一个操作,求矩阵的乘积
#variables have to be explicitly initialized before you can run Ops
#先创建一个session,其中 包含w,x,再实例化
init_op = tf.global_variables_initializer() #全局初始化
with tf.Session() as sess: #构造计算域
sess.run(init_op)
print (y.eval()) #输出y值,在tensorflow打印结果时,要加.eval()
3.常量值函数
tensorflow中的dtype类型有: float32, float64, int8, int16, int32, int64, uint8以及complex64.
tensorflow的基本操作很像numpy, 比如Tensors的生成常量值的函数:
tf.zeros(shape, dtype=tf.float32, name=None)
返回一个类型为dtype,并且维度为shape的tensor,并且所有的参数均为0.name是该操作的一个别名(可选的).
不能直接使用数字作为shape的参数
...
这是两个错误案例
# shape不能为int类型,需要指定为tensor shape类型
data = tf.zeros(1, dtype=tf.int32)
p.printValue("tf.zeros(1, dtype=tf.int32)", data)
...
#对应的解决方法
data = tf.zeros([1], dtype=tf.int32)
p.printValue("tf.zeros([1], dtype=tf.int32)", data)
tf.zeros_like(tensor, dtype=None, name=None)
创建一个所有参数均为0的tensor对象,该方法在参数赋值并置0的时候非常有用。
# 'tensor' is [[1, 2, 3], [4, 5, 6]]
#zeros_like()构造一个维度与tensor一致的,并且初始化为全0的tensor
tf.zeros_like(tensor) ==> [[0, 0, 0], [0, 0, 0]]
tf.ones(shape, dtype=tf.float32, name=None)
创建一个所有的参数都为1,并且维度为shape的tensor对象
tf.ones_like(tensor, dtype=None, name=None)
创建一个所有参数均为1的tensor对象
tf.fill(dims, value, name=None)
创建一个维度为dims,值为value的tensor对象,dims是类型为int32的tensor对象
当value为0时,该方法等同于tf.zeros();当value为1时,该方法等同于tf.ones()
tf.ones([2, 3], int32) ==> [[1, 1, 1], [1, 1, 1]]
# 'tensor' is [[1, 2, 3], [4, 5, 6]]
tf.ones_like(tensor) ==> [[1, 1, 1], [1, 1, 1]]
# Constant 1-D Tensor populated with value list.
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) => [1 2 3 4 5 6 7]
# Constant 2-D tensor populated with scalar value -1.
tensor = tf.constant(-1.0, shape=[2, 3]) => [[-1. -1. -1.]
[-1. -1. -1.]]
tf.constant(value, dtype=None, shape=None, name='Const')
创建一个值为value、形状为shape的常量tensor。
value可以是一个数或一个list。 如果是一个数,那么这个常量中所有值的按该数来赋值。 如果是list,那么len(value)一定要小于等于shape展开后的长度。赋值时,先将value中的值逐个存入。不够的部分,则全部存入value的最后一个值。
a = tf.constant(2,shape=[2])
b = tf.constant(2,shape=[2,2])
c = tf.constant([1,2,3],shape=[6])
d = tf.constant([1,2,3],shape=[3,2])
sess = tf.InteractiveSession()
print(sess.run(a))
#[2 2]
print(sess.run(b))
#[[2 2]
# [2 2]]
print(sess.run(c))
#[1 2 3 3 3 3]
print(sess.run(d))
#[[1 2]
# [3 3]
# [3 3]]
tf.linspace(start, limit, num)
生成一个从start 到limit 的等间隔的num个数
tf.range(start, limit, delta)
生成一个从start 到limit 的步长为delta的数
tf.linspace(10.0, 12.0, 3, name="linspace") => [ 10.0 11.0 12.0]
# 'start' is 3 ,'limit' is 18,'delta' is 3
tf.range(start, limit, delta) ==> [3, 6, 9, 12, 15]
4. 生成随机数与Shuffle操作:同numpy
Shuffle可用于打乱数据
norm = tf.random_normal([2, 3], mean=-1, stddev=4)
#[[-0.30886292 3.11809683 3.29861784]
#[-7.09597015 -1.89811802 1.75282788]]
#洗牌,打乱数据
# Shuffle the first dimension of a tensor
c = tf.constant([[1, 2], [3, 4], [5, 6]])
shuff = tf.random_shuffle(c)
# Each time we run these ops, different results are generated
sess = tf.Session() #用with结构更规范
print (sess.run(norm))
print (sess.run(shuff))
#[[3 4]
# [5 6]
# [1 2]]