当前位置 : 主页 > 编程语言 > python >

python的tensorflow基础

来源:互联网 收集:自由互联 发布时间:2022-06-30
变量 它们通过使用变量类来创建。变量的定义还包括应该初始化的常量/随机值。下面的代码中创建了两个不同的张量变量 t_a 和 t_b。两者将被初始化为形状为 [50,50] 的随机均匀分布,

变量

  • 它们通过使用变量类来创建。变量的定义还包括应该初始化的常量/随机值。下面的代码中创建了两个不同的张量变量 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不写默认为1
saver.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('./'))

  • 很多时候需要大规模的常量张量对象;在这种情况下,为了优化内存,最好将它们声明为一个可训练标志设置为 False 的变量:
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指定的文件中。


上一篇:sort and sorted用法
下一篇:没有了
网友评论