首先,爆炸安利一个免费的在网易云课堂上的课程--深度学习应用开发TensorFlow实践https://mooc.study.163.com/course/2001396000
现在是2019年4月份可免费加入课程,进行学习。在手机网易云课堂APP上下载了所有视频,个人评价满分。但是吧,可能因为这门课针对的群体问题,老师讲的非常慢,1.5倍速都较慢,很多内容比较长,但是绝对是讲的简单、具体,碰见太过熟悉的内容跳过就好啦。
下一篇:Tensorflow入门二-单变量线性回归https://blog.csdn.net/qq_36187544/article/details/89445851
tensorboard可视化在文末
搭环境安装TensorFlow等就跳过。
TensorFlow是通过数据流的形式管理算法进展,所以会话session就提出来了,每次建立时建立会话,然后通过会话进行流运行,最后关闭session。节点为常量和变量等,边为运算
通过关键词管理管理session,可自动释放资源。下面的例子很不详细,记录下session概念而已
with tf.Session() as sess:
sess.run()
也可以通过try的方式:
sess=tf.Session()
try:
sess.run()
except:
pass
finally:
sess.close()
eval计算的使用:
result=tf.add(node1,node2)#node为节点
with sess.as_default:
print(result.eval())
#如果没有缺省值,就要这样写:
result.eval(session=sess) #result.eval() 错误
#在交互式环境下通过设置默认会话:
sess=tf.interactiveSession()result.eval()sess.close()
常量与变量的使用:
#常量字母小写,变量大写,1.0默认float32,1默认int32
tf.constant(1.0,name="abc")
v1=tf.Variable(1,name='v1')
#变量需要初始化,常量不需要
init_op=v1.initializer()#单个变量初始化
init_op=tf.global_varibles.initializer()#所有初始化
sess.run(init_op)#初始化操作是需要运行,不加这句仍旧是静态图,无法执行
#由于TensorFlow无需手动赋值,若要手动赋值,可采用assign
v1=tf.Variable(1,name='v1')
update_value=tf.assign(v1,v2)#v2为其他变量或常量
#占位符,类似C和python中格式化输出%
L1损失,指实际与预测的差值
平方损失(L2损失),指差值平方
均方损失(MSE),指平方损失的均值
以上为初步认识下tensorflow,还是根据代码来认识才到位,看视频和自己码一遍真不是一样,如果想要自己实现又更进一步
需要注意的是,整个迭代过程中,没有赋值和计算等算式,但已经在前面定义了,可理解成函数形式
import tensorflow as tf
# 通过变量计算1+2+3..+10
value = tf.Variable(0,name='value')
one = tf.constant(1)
add_part = tf.Variable(0)
add_update = tf.assign(add_part, tf.add(add_part,one))
new_value = tf.add(value,add_update)
update_value = tf.assign(value,new_value)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for _ in range(10):
sess.run(update_value)
print(sess.run(value))
执行结果:
占位符的使用,使用feed_dict进行填充数据,需要注意的是占位符的使用和feed_dict,以及同时多个操作,拆包:
import tensorflow as tf
a = tf.placeholder(tf.float32,name='a')
b = tf.placeholder(tf.float32,name='b')
c = tf.multiply(a, b, name = 'c')
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
# 占位符placeholder,一定通过feed_dict方法传递参数
result = sess.run(c,feed_dict={a:8.0,b:3.5})
print(result)
#多个操作可通过一次feed完成
d = tf.subtract(a,b,name='d')
result = sess.run([c,d] , feed_dict={a:[8.0,2.0,3.5],b:[3.5,2.0,4.]})
print(result)
#也可拆包
rc,rd = sess.run([c,d] , feed_dict={a:[8.0,2.0,3.5],b:[3.5,2.0,4.]})
print(rc)
print(rd)
执行结果为:
tensorborad可视化展示,查看数据流图:
import tensorflow as tf
# 启动时,使用Anaconda Prompt进入日志存放目录(为linux操作,常用操作为cd a进入a文件,dir查看所有文件,
# 到日志目录输入(logdir=后为本机目录,我的是下面这个)
# tensorboard --logdir=C:\Users\ASUS\Desktop\tensorflow\log
# 打开后控制器开启,打开网页输入localhost:6006即可
# 注意:Edge浏览器抽风打不开的!
#清除default_graph
tf.reset_default_graph()
#logdir路径,注意\t会被转义,所以直接都加\\好了
logdir='C:\\Users\\ASUS\\Desktop\\tensorflow\\log'
#直接沿用之前的代码
value = tf.Variable(0,name='value')
one = tf.constant(1)
add_part = tf.Variable(0)
add_update = tf.assign(add_part, tf.add(add_part,one))
new_value = tf.add(value,add_update)
update_value = tf.assign(value,new_value)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for _ in range(10):
sess.run(update_value)
print(sess.run(value))
#生成一个写日志的writer,将当前tf计算图写入日志
writer = tf.summary.FileWriter(logdir,tf.get_default_graph())
writer.close()
anaconda prompt输入,开启Localhost:6006网址,查看数据流图:
输入Localhost:6006将直接进入: