java中的接口是类吗
444
2022-08-26
python的tensorflow基础
变量
它们通过使用变量类来创建。变量的定义还包括应该初始化的常量/随机值。下面的代码中创建了两个不同的张量变量 t_a 和 t_b。两者将被初始化为形状为 [50,50] 的随机均匀分布,最小值=0,最大值=10:
def varable_array(): t_data1 = tf.random_uniform([50, 50], 0, 10, seed=12) v_data = tf.Variable(t_data1) with tf.Session() as sess: #必须初全局初始化变量,才可以使用变量 init = tf.global_variables_initializer() sess.run(init) print(sess.run(v_data))
下面的代码中定义了两个变量的权重和偏置。权重变量使用正态分布随机初始化,均值为 0,标准差为 2,权重大小为 100×100。偏置由 100 个元素组成,每个元素初始化为 0。在这里也使用了可选参数名以给计算图中定义的变量命名:
def weight_varable(): #权重 weight = tf.Variable(tf.random_normal([100, 100], stddev=2)) #偏置 bais = tf.Variable(tf.zeros([8, 8], name="bais")) with tf.Session() as sess: init = tf.global_variables_initializer() sess.run(init) print(sess.run(weight)) print(sess.run(bais))
对于局部变量的初始化
def one_init_varable(): weight = tf.Variable(tf.random_uniform([9, 9], maxval=10, seed=12)) bais = tf.Variable(tf.ones([9, 9], name="bais")) with tf.Session() as sess: #局部初始化变量,单一的 sess.run(weight.initializer) sess.run(bais.initializer) print(sess.run(bais))
Tensorflow变量仅在会话中存在。因此,您必须在一个会话中保存模型,调用刚刚创建的save方法、
saver = tf.train.Saver()
保存模型(例子):
saver = tf.train.Saver(max_to_keep=3)#max_to_keep不写默认为1saver.save(sess, 'my-test-model')
加载恢复模型(例子)
saver = tf.train.import_meta_graph('my_test_model-1000.meta')
载入参数:
with tf.Session() as sess: new_saver = tf.train.import_meta_graph('my_test_model-1000.meta') new_saver.restore(sess, tf.train.latest_checkpoint('./'))
t_large = tf.Varible(large_array,trainable = False)
切记序列不可以迭代
for i in tf.range(10)
会出现如下错误info
#typeError("'Tensor'object id not iterable.")
矩阵运算
def matrix_anns(): sess = tf.InteractiveSession() v_data = tf.eye(5) v_var_data = tf.Variable(tf.eye(10)) v_var_data1 = tf.Variable(tf.random_normal([5, 5])) #.matmul矩阵乘法1*5+1*5+1*5+1*5+1*5 v_var_data2 = tf.matmul(tf.ones([5, 5], tf.int32), tf.ones([5, 5], tf.int32)) v_var_data3 = tf.Variable(tf.random_normal([5, 5], 0, 10, seed=0)) v_var_data.initializer.run() v_var_data1.initializer.run() v_var_data3.initializer.run() print(v_data.eval()) #可以代替sess.run(v_var_data.eval()) print(v_var_data.eval()) print(v_var_data1.eval()) print(v_var_data2.eval()) print(v_var_data3.eval()) #类型转换函数cast cast_data3 = tf.cast(v_var_data3, dtype=tf.int32) #矩阵加法 casted_add = tf.add(v_var_data2, cast_data3) #矩阵减法 casted_sub = v_var_data2 - cast_data3 #一个标量乘一个矩阵 casted_scalar_mu = tf.scalar_mul(3, casted_sub) #a=b*c casted_ab = v_var_data2 * cast_data3 #除法 caste_div = tf.div(v_var_data2, cast_data3) #取模 caste_mod = tf.mod(cast_data3, v_var_data2) print(cast_data3.eval()) print(casted_add.eval()) print(casted_sub.eval()) print(casted_scalar_mu.eval()) print(casted_ab.eval()) print(cast_data3.eval()) print(caste_mod.eval()) #保存训练模型的数据 writer = tf.summary.FileWriter('graphs', sess.graph) sess.run(writer) sess.close()
tf.div 返回的张量的类型与第一个参数类型一致。如果在整数张量之间进行除法,最好使用 tf.truediv(a,b),因为它首先将整数张量转换为浮点类,然后再执行按位相除。FileWriter用法
writer = tf.summary.FileWriter(path, session.graph)
指定一个文件用来保存图。log是事件文件所在的目录,这里是工程目录下的log目录。第二个参数是事件文件要记录的图,也就是TensorFlow默认的图。可以调用其add_summary()方法将训练过程数据保存在filewriter指定的文件中。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~