tensorflow用法,tensorflow支持的语言
会话一个运行张量流运算的类,会话开启的两种方式:tf .会话():用于完整的程序中tf .InteractiveSession():用于交互上下文中的张量流,例如:shellinit(target= ,graph=None,config=None):初始化会话图表:默认情况下,会话绑定默认图目标:访问远程设备,指定grpc://网址配置:允许指定一个tf .配置协议控制会话行为,如:配置协议协议用于打印设备#所有的op、ses、张量都是在同一张图中,即内存地址相同
定义graph_demo():
v_data1=tf。常数([1,2,3])
v_data2=tf.constant([3,2,1])
v_data3=tf.add(v_data1,v_data2)
default _ graph=TF获取默认图形()
打印(默认图形)
打印(v_data2.graph)
用tf .会话(config=tf .配置协议(allow _ soft _ placement=True,log _ device _ placement=True))作为会话:
打印(sess.graph)运行:提取:单一的操作,或者列表、元组(不属于张量流类型的不行)feed_dict:参数允许调用覆盖图中的值,进行赋值与tf.placeholder搭配使用,检查值的形状与占位符号是否兼容def place_constant():
#支架占位类型
a=tf.placeholder(tf.int32)
b=tf.placeholder(tf.int32)
c=tf.add(a,b)
用tf .会话()作为会话:
#使用奔跑中的饲料_字典进行传值
print(sess.run(c,feed_dict={a:1,b:2}))
查看张量的值,只能在会话中查看sess.run().eval()
张量张量流的张量就是一个n维数组类型:数据类型形状:形状张量类型张量的阶创建张量的时候,如果不指定类型
默认tf.float32
整型:tf.int32
浮点型:tf.float32张量的变换类型变换def Matrix_cast():
矩阵1=TF。random _ normal(形状=[9,9],平均值=1.8,标准差=5,种子=12)
#查看类型
打印(matrix1.dtype)
#tf.to.转换指定到.类型
matrix2=tf.to_int64(matrix1)
打印(矩阵2)
#转换成想要的类型,演员阵容不会修改原本的张量,返回修改内之后的张量
matrix3=tf.cast(matrix2,dtype=tf.float64)
打印(矩阵3)
用tf .会话()作为会话:
打印(sess.run(matrix2))形状修改
静态形状(不能跨阶数)—-一开始创建的张量的形状,确定了维数就不能改变维数了一维到一维、二维到二维.修改静态形状,只有形状没有固定下来的情况下,才能改def place _ mattrix():
#占位,未确定形状
a=TF。占位符(dtype=TF。浮动32,形状=[无,无])
b=TF。占位符(dttype=TF。float 32,shape=[无,10])
c=TF。占位符(dttype=TF。浮点32,形状=[8,8])
#填充占位
答。集合形状([9,9])
集合形状([9,10])
打印(一份)
打印(二)
打印(三)动态形状修改(可以跨阶数),只会返回修改之后的张量,不会修改原始的tensordef d3_place_matrix():
#占位,未确定形状
a=TF。占位符(dtype=TF。浮动32,形状=[无,无])
b=TF。占位符(dttype=TF。float 32,shape=[无,10])
c=TF。占位符(dtype=TF。float 32,shape=[7,8]),
#动态修改,可更改阶数,不能改变数量,但是不能修改元素的数量,列入c的[7,8]可以[8,7,1]不能[10,5,1]
a _ reshaped=TF。shape(a,shape=([1,2,3])
c _ reshaped=TF。shape(c,shape=([8,7,1])
打印(一份)
打印(二)
打印(三)
打印(形状改变)
打印(c _整形)变量过强;管理员变量的特点:存储持久化可修改值可指定被训练创建变量极好的变量_sc():
#tf。变量_作用域修改命名空间使结构更加清晰
用TF。变量范围( my _ scopr 1 ):
a=tf .变量(初始值=88)
b=tf .变量(初始值=99)
用TF。变量范围(我的范围2 ):
c=tf.add(a,b)
打印(一份)
打印(二)
打印(三)
用tf .会话()作为会话:
#初始化全局变量
sess。运行(TF。global _ variables _ initializer()
打印(sess.run(c))基础APItf.app
相当于为张量流脚本提供主要的函数入口tf。图像
张量流的图像处理,主要颜色变换,变形和解码tf.gfile
提供文件操作函数tf。摘要
生成张量板可用的统计日志,目前四种类型:
音频、图像、直方图、scalartf.python_io
读取TFRecords文件tf。火车
提供一个训练器,结合tf.nn,实现网络tf.nn的优化计算。
提供神经网络的底层功能和核心模块。
它包括各层的功能,如卷积层、池层和其他高级APItf.keras。
深度学习库tf.layers
用更高的概念对模型进行分层,类似于kerastf.contrib
它可以提供计算图中的网络层、正则化、汇总运算,是构建计算图的高级运算tf.estimator。
实现几个简单的分类器和回归器。这里的DNN网只是全连通网,并没有2020年10月16日的总结(完整),比如卷积:基本完成。之前因为先学了Tensorflow2.x,一开始不能直接理解底层原理,所以很难。现在反过来把底层学的更清楚了,知道多位矩阵的各种运算。张量是
重点:矩阵运算。
难点:理解图像的像素矩阵参与运算的思想案例:实现线性回归模型的训练案例确定随机点有100个,只有一个特征值数据有自己的分布y=0.8*x 0.7。回顾线性回归原理并建立模型。
Y=w1n1.建立一个损失函数
均值方差优化损失
梯度下降训练分析准备
准备数据
28个样本
x特征形状(100,1)
y值形状(100,1)
假设x和y之间的关系满足
y=ax b
a0.8 b0.7
在线分析
(100, 1)*(1, 1)=(100,1)
Y _ predict=x * weights (1,1)basis(1,1)建筑模型
Y _ predict=TF。matmul (x,权重)基于施工损失
误差=TF . reduce _ mean(TF . square(y _ predict-y _ value))优化损失
optimizer=TF . train . gradiendescentoptimizer(learning _ rate=0.01)。最小化(错误)代码将导入张量流实现为tf。
导入操作系统
OS . environ[ TF _ CPP _ MIN _ LOG _ LEVEL ]= 2
生成数据
def随机数据():
#生成数据
x=tf.random_normal(shape=[100,1])
y_value=tf.matmul(x,[[0.8]]) 0.7
返回x,y值
建立一个模型并处理它。
def pand_data_gets():
#模型准备,k,b是随机值
重量=tf。变量(初始值=tf.random_normal(shape=[1,1]))
bais=tf。变量(初始值=tf.random_normal(shape=[1,1]))
用tf。会话()作为会话:
sess . run(TF . global _ variables _ initializer())
y _ predict=TF . mat mul(sess . run(random _ data())[0],weight) bais
#构建损失函数,均方误差
error=TF . reduce _ mean(TF . square(y _ predict-sess . run(random _ data())[1])
#优化损耗最小化(误差)使损耗最小化,GradientDescentOptimizer的梯度减小。
optimizer=TF . train . gradientdescentoptimizer(learning _ rate=0.001)。最小化(误差)
#检查初始化值
Print(预训练模型参数为:weight %f,offset %f,loss% f% (weight.eval(),bais.eval(),error.eval()))
对于范围内的I(1000):
#开始训练
sess.run(优化器)
Print(训练后模型参数为:weight %f,offset %f,loss% f% (weight.eval(),bais.eval(),error.eval()))
if __name__==__main__ :
pand_data_gets()的学习率设置、步数设置、梯度爆发
在极端情况下,权重值变得非常大,这导致重新设计NaN值解、调整学习率、使用梯度截断以及使用激活函数变量观察可训练设置。
的变量tarinable设置为False,这意味着不允许训练。默认值为True。增加tensorBoard变量显示集合变量tf.summary.scalar (name= ,Tensor)收集损失值tf.summary.histogram(name= ,Tensorf)收集变量参数tf.summary.image(name= )高维,Tensor)收集输入图片的张量显示图片合并变量写入事件文件merged=tf.summary.merge_all()运行merge:sess . sun(merrged)Add file writer . Add _ summary(path, I)指示次数的值的示例:# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#重要提示:请确保将要保存在作业中的文件保存在结果文件夹中。
#重要提示:请确保您的文件保存在“结果”文件夹中
#在你的工作中
###############################################################################
将张量流作为tf导入
导入操作系统
OS . environ[ TF _ CPP _ MIN _ LOG _ LEVEL ]= 2
生成数据
def随机数据():
#生成数据
x=tf.random_normal(shape=[100,1])
y_value=tf.matmul(x,[[0.8]]) 0.7
返回x,y值
建立模型并处理
def pand_data_gets():
#模型准备,k,b均为随机值
重量=tf .变量(初始值=tf.random_normal(shape=[1,1]))
bais=tf .变量(初始值=tf.random_normal(shape=[1,1]))
用tf .会话()作为会话:
sess。运行(TF。global _ variables _ initializer()
#创建事件文件
file _ writer=TF。总结。文件编写器(./results/tb_results/model3 ,graph=sess.graph)
y _ predict=TF。mat mul(sess。run(random _ data())[0],weight)bass
#构建损失函数,均方误差
误差=TF。reduce _均值(TF。square(y _ predict-sess。run(random _ data())[1]),name=error )
#收集变量
tf.summary.scalar(error ,错误)
tf.summary.histogram(weight ,权重)
tf.summary.histogram(bais ,bais)
#合并变量
merged=tf.summary.merge_all()
#优化损失最小化(误差)最小化损失,梯度下降优化器梯度下降
优化器=TF。火车。gradienddescentoptimizer(learning _ rate=0.001).最小化(误差)
#查看初始化后的值
打印(训练前模型参数为:权重%f,偏置%f,损失值% f"%(重量。eval()、bais.eval()、error.eval()))
对于范围内的我(1000):
#开始训练
sess.run(优化器)
#合并变量操作
summaries=sess.run(合并)
#将每次迭代后的时间写入事件文件
文件_编写器.添加_摘要(摘要,我)
打印(训练后模型参数为:权重%f,偏置%f,损失值% f"%(重量。eval()、bais.eval()、error.eval()))
if __name__==__main__ :
pand_data_gets()添加命名空间使代码结构更加清晰,张量板图结构清楚用TF。variable _ scope( lr _ modle )模型保存与加载tf.train.Saver(var_list=None,max_to_keep=5)var_list:指定要保存和还原的变量,它可以作为一个词典和一个列表传递最大保留时间:指示保留的检查点的最大数量,默认为5保存与加载的例子:将张量流作为法国南部(French Southern Territories的缩写)导入
导入操作系统
OS。environ[ TF _ CPP _ MIN _ LOG _ LEVEL ]= 2
生成数据
极好的随机数据():
#生成数据
x=tf.random_normal(shape=[100,1])
y_value=tf.matmul(x,[[0.8]]) 0.7
返回x,y值
建立模型并处理
def pand_data_gets():
#模型准备,k,b均为随机值
重量=tf .变量(初始值=tf.random_normal(shape=[1,1]))
bais=tf .变量(初始值=tf.random_normal(shape=[1,1]))
saver=TF。火车。saver(max _ to _ keep=3)
用tf .会话()作为会话:
sess。运行(TF。global _ variables _ initializer()
#创建事件文件
file _ writer=TF。总结。文件编写器(./results/tb_results/model2 ,graph=sess.graph)
y _ predict=TF。mat mul(sess。run(random _ data())[0],weight)bass
#构建损失函数,均方误差
误差=TF。reduce _均值(TF。square(y _ predict-sess。run(random _ data())[1])
#收集变量
tf.summary.scalar(error ,错误)
tf.summary.histogram(weight ,权重)
tf.summary.histogram(bais ,bais)
#合并变量
merged=tf.summary.merge_all()
#优化损失最小化(误差)最小化损失,梯度下降优化器梯度下降
优化器=TF。火车。gradienddescentoptimizer(learning _ rate=0.001).最小化(误差)
#查看初始化后的值
打印(训练前模型参数为:权重%f,偏置%f,损失值% f"%(重量。eval()、bais.eval()、error.eval()))
#对于范围内的我(1000):
# #开始训练
# sess.run(优化器)
# #合并变量操作
# summary=sess.run(合并)
# #将每次迭代后的时间写入事件文件
#文件编写器。add _ summary(summary,I)
#如果i==0:
# saver.save(sess, 0 ./tmp/my_linear.ckpt )
如果os.path.exists(./tmp/my_linear.ckpk ):
saver.restore(sess ./tmp/my_linear.ckpt )
打印(训练后模型参数为:权重%f,偏置%f,损失值% f"%(重量。eval()、bais.eval()、error.eval()))
if __name__==__main__ :
pand_data_gets()命令行参数使用tf.app.FLAGS,这是从命令行接收的参数,用于指定tf.app.flags的配置。它可以调用程序前面定义的特定flag_name,通过tf.app.run()启动main(argv)函数。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。