tensorflow学习1
Posted chenke-cheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tensorflow学习1相关的知识,希望对你有一定的参考价值。
写在前面:
today,2018.04.09,4.1的蓝桥杯不太理想,自己对未来还是充满了希望的,至此从2017年11月左右开始接触tensorflow,一直的学习都比较间断,但是还是做了一些实际的实验的使用,但是深知自己对于tensorflow的理解的并不是很深入,再此之前学习过C++和相应的算法,和Python的一些使用,从今天开始期望用一个月左右的时间深入学习tensorflow,并在学习中进行一定的应用,并完成相关论文的写作,活用活学。对了,忘了补充现在作者的境况,作者目前就读于一所普通大学,专业电子方向,深度学习可以应用于本学科的交叉学科的应用。
废话少说开始进行第一阶段的学习:
1.图&会话(session)
import tensorflow as tf
hello=tf.constant("hello world")
sess=tf.Session()%创建会话
(sess.run(hello).decode(‘utf-8‘))%如果不加入decode(‘utf-8‘),output->b‘hello word‘,加上则output->hello word
2.placehoder(占位符)
tf.placehoder(dtype,shape=None,name=None)
dype:占位符的数据类型 shape:占位符的维度,[2,2]代表2*2的二维矩阵,None可以代表任意维度,例如【None,2】代表任意的行数,2列的二维矩阵,name 占位符的名字。
和C++/C一样变量定义时要进行初始化,但是有些数据需要我们从外部输入的,但并不知道变量的值,如训练的数据是从外部进行输入的,这个时候就需要我们使用占位符进行占个位置,等到真正运行时再通过输入数据赋值。
x=tf.placehoder(tf.float32,[2,2])
生成一个2*2的二维矩阵,矩阵的每个元素的类型都是tf.float32(浮点型)
有时候需要定义训练的参数的时候,会定义一个【input_size,output_size】大小的矩阵,其中input_size为输入数据的维度,output_size为输出数据的维度。
3.variable ——变量
变量在初始化的时候需要一个初始值
x=tf.Variable(tf.zeros([2,2])) 声明一个2*2的矩阵,矩阵中所有的元素的值都为0,默认元素的类型为tf.float32
y=tf.Variable(1.0,tf.flot32) 声明一个变量 value 1.0,数据的类型 tf.float32 类型
需要注意的是,变量的初始化还需要运行global_variables_initializer
4.constant 常量
x=tf.constant(1.0,tf.float32)---->同样第一个为value,第二个为dtype.
5. Session 会话
Notice! tensorflow所有的操作都必须放在Session中进行,才会真正起到作用,可以将Session当作tensorflow的运行环境,Session运行后需要close,
但是可以使用
with tf.Session() as sess:#把sess,run()放在 with tf.Session() as sess:之中就不需要
with tf.Session() as sess:
sess.run(...)
6.变量的数值计算
介绍一下,3+5使用tensorflow进行计算的方法。
import tensorflow as tf
x=tf.Variable(1.0,tf.int16)
y=tf.Variable(2.0,tf.int16)
z=tf.add(x,y)
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(z))
注意这里输出3.0
注意变量的初始化:init=tf.global_variables_initializer()----------------》同时还要紧跟一个在Session()中 sess.run(z)--->这样的话变量才会被初始化。
7.0变量和张量的数值计算
(1)零维张量的计算
定义常量,常量不需要定义 global_variables_initializer() 和 sess.run()
import tensorflow as tf
x=tf.constant(1.0)
y=tf.constant(2.0)
with tf.Session() as sess:
print("add result %i" % sess.run(x+y))
print("mult %i" % sess.run(x*y))
add result 3
mult 2
(2)二维张量的计算(有问题,这个矩阵相乘的过程)
matrix1 = tf.constant([[3,3]])
matrix2 = tf.constant([[2],[2]])
product = tf.matmul(matrix1,matrix2)
with tf.Session() as sess:
result = sess.run(product)
print(result)
输出结果 [[12]]
(3)占位符变量的计算
a=tf.placeholder(tf.int16)
b=tf.placeholder(tf.int16)
c=tf.add(a,b)
d=tf.multiply(a,b)
with tf.Session() as sess:
print(" add result %i" % sess.run(c,feed_dict={a:2,b:3}) )
输出结果: add result 5
(4)变量加常量的计算,还是变量
import tensorflow as tf
state=tf.Variable(0,name="counter")
print(state)
下面为print的结果
<tf.Variable ‘counter:0‘ shape=() dtype=int32_ref>
import tensorflow as tf
state=tf.Variable(0,name="counter")
print(state)
<tf.Variable ‘counter:0‘ shape=() dtype=int32_ref>
ones=tf.constant(1)
new_values=state+ones#常量加变量仍然等于变量=====tf.add(state,ones)
updata=tf.assign(state,new_values)#更新new_values节点到state节点
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for i in range(3):
sess.run(updata)
print(sess.run(state))
result:
1
2
3
后记:
1.tf.constant()不需要定义init=tf.global_variables_initializer()--->并执行sess.run()进行初始化变量,而变量需要。
2.tf.variable()需要进行初始化
3.占位符 tf.placeholder()类似于给变量开空间,方便在外部进行输入数据,输入数据使用字典feed_dict={a:2,b:3}
如 x=tf.placeholder([None,2],tf.flaot32)---->[None,2] 代表未知行,2列的二维矩阵。
在with tf.Session() as sess:中 使用sess.run()----->sess.run(add,feed_dict={a:2,b:3}))------->此列子代表为输入赋值。
4.tensorflow的任意操作都必须使用Session进行运行。
以上是关于tensorflow学习1的主要内容,如果未能解决你的问题,请参考以下文章
Centos 7.4.1708 安装cuda8.0cudnn v5.1Tensorflow 1.2.1Python 2.7.5教程
Centos 7.4.1708 安装cuda8.0cudnn v5.1Tensorflow 1.2.1Python 2.7.5教程