#首先引入tensorflow 代码块是同一.py中
import tensorflow as tf
符号 Tensor
- 阶 rank
类似于维度 什么是张量?张量相当于表,又有点类似于树
阶数 | 维度 | 实际意义 | 举例 |
---|---|---|---|
0 | 0维张量 | 标量 | 2 |
1 | 1维张量 | 向量 | [1,2] |
2 | 2维张量 | 矩阵 | [[123,33],[232,21]] |
3 | 3维张量 | 2维张量的向量 | [[1,2],[123,33]],[[3,5],[7,9]]] |
4 | 4维张量 | 3维张量的向量 | ~~~ |
5 | 5维张量 | 4维张量的向量 | ~~~ |
n | n维张量 | n-1维张量的向量 | ~~~ |
- 形状 Shape
就是张量形状描述 ,长度是张量的阶数
阶 | shape | 举例 |
---|---|---|
0 | [] | shape[] |
1 | [D0]#D0是数据集 | shape[233]#D0的个数 |
n | [D0,....,Dn-1]#D0是数据集 | shape[D0,....,Dn-1] |
- 数据类型 type
支持所有python 支持的基础数据类型
- 流图Graph
由一系列节点(node)汇聚而成的tf操作(option)
- 构造函数
constant(
value,
dtype=None,
shape=None,
name='Const',
verify_shape=False
)
- 举例
node1= tf.constant([True,True])
node2= tf.constant(12)
node3=tf.constant("hello")
node4=tf.constant("world")
print(node1)#打印Tensor("Const:0", shape=(2,), dtype=bool)
print(node2)#打印Tensor("Const_1:0", shape=(), dtype=int32)
print(node3)#打印Tensor("Const_2:0", shape=(), dtype=string)
sess=tf.Session()#获取会话
print(sess.run(node1))#打印[True,True]
print(sess.run(node2))#打印12
print(sess.run(node3))#打印b'hello'
print(sess.run(node4))#打印b'world'
#要想获取平常的值如12 必须通过sess.run()进行,不然输入还是tensor格式
- 构造函数
add(
x,
y,
name=None
)
- 举例
node5=tf.constant(-1)
n_add=tf.add(node2,node5)
print(sess.run(n_add))#打印11
node6=tf.constant(-2)
n_add2=node5+node6
print(sess.run(n_add2))#打印-3 说明两种形式的加法也可以的
方法tf.placeholder
相当于数学函数的右侧的变量
构造函数
placeholder(
dtype,
shape=None,
name=None
)
例子
p1=tf.placeholder(tf.float32)
p2=tf.placeholder(tf.float32)
n_add3=p1+p2
a=sess.run(n_add3,{p1:23,p2:32})#用法正确
#a=(n_add3,{p1:23,p2:32})错误 只能和sess一起使用
print(a)#55.0
print(sess.run(n_add3,{p1:23,p2:32}))#用法正确 打印55.0
- 构造函数
__init__(
initial_value=None,
trainable=True,
collections=None,
validate_shape=True,
caching_device=None,
name=None,
variable_def=None,
dtype=None,
expected_shape=None,
import_scope=None
)
- 实例
v1=tf.Variable(12)
v2=tf.Variable(23)#定义一个变量
init = tf.global_variables_initializer()#进去全部变量的初始化
sess.run(init)
x=tf.placeholder(tf.int32)
a_line=v1*x+v2#使用和常量类似
v3=sess.run(a_line,{x:[1,2]})
print(v3)#[35 47]
#重新赋值
v1=tf.assign(v1,-2)
v2=tf.assign(v2,3)
add4=v1+v2
v4=sess.run(add4)
print(v4)#1