欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TensorFlow入门(1)

程序员文章站 2024-03-14 17:44:28
...

关于Tensorflow

TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

什么是数据流图(Data Flow Graph)

数据流图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。

tf常量变量

import tensorflow as tf
data1= tf.constant(2.5)
data2=tf.Variable(10,name='var')
print(data1)
print(data2)
>>>
 Tensor("Const:0", shape=(), dtype=float32)
<tf.Variable 'var:0' shape=() dtype=int32_ref>
#tensor代表张量  const代表常量  shape代表维度  dtype=float32代表当前数据类型
#var代表变量  dtype int32

tensorflow的操作都必须在session中进行

import tensorflow as tf
data1= tf.constant(2.5)
data2=tf.Variable(10,name='var')
sess=tf.Session()
print(sess.run(data1))

输出
2.5


import tensorflow as tf
data1= tf.constant(2,dtype=tf.int32)
data2=tf.Variable(10,name='var')
sess=tf.Session()
print(sess.run(data1))

init=tf.global_variables_initializer()
sess.run(init)
#变量需要先初始化否则会出错

print(sess.run(data2))
sess.close()
#sess的关闭 方法二  方法一为上述的close方法
import tensorflow as tf

data2=tf.Variable(10,name='var')
sess=tf.Session()
init=tf.global_variables_initializer()
with sess:
    sess.run(init)
    print(sess.run(data2))

Tensorflow实质

实质:张量Tensor+计算图grahps
TensorFlow入门(1)
tensor的实质是数据 常量或者变量 一维或者多维
op 对数进行操作
graphs 数据操作

  • 四则运算
#tf常量的四则运算  加减乘除
import tensorflow as tf
data1= tf.constant(6)
data2=tf.constant(2)
dataadd=tf.add(data1,data2)
datamul=tf.multiply(data1, data2)
datasub=tf.subtract(data1, data2)
datadiv=tf.divide(data1,data2)
with tf.Session() as sess:
    print(sess.run(dataadd))
    print(sess.run(datasub))
    print(sess.run(datamul)) 
    print(sess.run(datadiv))

#tf的四则运算  加减乘除
import tensorflow as tf
data1= tf.constant(6)
data2= tf.Variable(2)
dataadd=tf.add(data1,data2)
datamul=tf.multiply(data1, data2)
datasub=tf.subtract(data1, data2)
datadiv=tf.divide(data1,data2)
init=tf.global_variables_initializer()
'''变量的初始化'''
with tf.Session() as sess:
    print(sess.run(init))
    #运行起来init 才能使用
    print(sess.run(dataadd))
    print(sess.run(datasub))
    print(sess.run(datamul)) 
    print(sess.run(datadiv))

#tf的四则运算  加减乘除
import tensorflow as tf
data1= tf.constant(6)
data2= tf.Variable(2)
dataadd=tf.add(data1,data2)
datacopy=tf.assign(data2,dataadd)
datamul=tf.multiply(data1, data2)
datasub=tf.subtract(data1, data2)
datadiv=tf.divide(data1,data2)
init=tf.global_variables_initializer()
'''变量的初始化'''
with tf.Session() as sess:
    sess.run(init)
    #运行起来init 才能使用
    print(sess.run(dataadd))
    print(sess.run(datasub))
    print(sess.run(datamul)) 
    print(sess.run(datadiv))
    print('sess.run(datacopy)',sess.run(datacopy)) #  8->  data2
    print('datacopy.eval()',datacopy.eval())   #data2 =8   data2+data1=14
    print('tf.get_default_session()',tf.get_default_session().run(datacopy)) #data2=14  data2+data1=20
#   .eval  相当于 tf.get_default_session()

output:
8
4
12
3.0
sess.run(datacopy) 8
datacopy.eval() 14
tf.get_default_session() 20

placeholder

tf.placeholder(dtype, shape, name)
第一个参数代表要输入的数据的数据类型,大多数时候是float32
第二个参数代表要保存的数据的结构,只不过他和变量不一样的地方在于,她在session的运行阶段需要通过data_dict{ } 喂数据

import tensorflow as tf
a=tf.placeholder(tf.float32)
b=tf.placeholder(tf.float32)
c=tf.add(a,b)
with tf.Session() as sess:
    print(sess.run(c,feed_dict={a:10,b:20}))

就像前面的讲解一样,我们先弄了一个壳子,并且定义了operation为add,然后在会话(Session)中用feed_dict把数据给它。 如上 a=10 b=20。

reshape

print '改成2行3列:'
print c.reshape(2,3)
print '改成3行2列:'
print c.reshape(3,2)
print '我也不知道几行,反正是1列:'
print c.reshape(-1,1)
print '我也不知道几列,反正是1行:'
print c.reshape(1,-1)
print '不分行列,改成1串'
print c.reshape(-1)