代码:
#!usr/bin/env python# coding:utf-8"""这个代码的作用是 通过 tensorflow 来计算 y = 0.3x + 0.1 的线性方程 通过随机数,, 然后传递值到 训练模型中开始计算 并在 运行结束后, 将变量保存起来, 在下次运行的时候直接读取."""import tensorflow as tfimport numpy as npimport os # 建立方程组:# 使用 np 获取一个 1---1000 的随机数x_data = np.float32(np.random.rand(1, 100))# 设置 方程组y_data = 0.1 * x_data + 0.300 # 建立 模型# 初始化 wieght 范围为-1 --> 1Weight = tf.Variable(tf.random_uniform([1], -1.0, 1.0), name=‘Weight‘)# 设置 b 初始化为 tf.zeros(1) 在初始化的时候会被置为0 , 然后为了保证 b 不为0 , 设置+0.1b = tf.Variable(tf.zeros(1), name=‘b‘) + 0.1 x = tf.placeholder(‘float‘)y_ = tf.mul(x, Weight) + b # 梯度下降法, 来降低 weight 和b 值在修改中的改变 loss = tf.reduce_mean(tf.square(y_ - y_data))train = tf.train.GradientDescentOptimizer(0.1).minimize(loss) init = tf.global_variables_initializer()sess = tf.Session() saver = tf.train.Saver({"Weight": Weight})# 还原保存数据 或者 初始化 变量sess.run(init)if os.path.exists("save_path"): saver.restore(sess, "save_path/test.ckpt") for i in range(1000): # 如果直接 用 x_data 传入 y_ = tf.mul(x_data,Weight) 的话, 这里的 feed_dict 是不用赋值的. sess.run(train, feed_dict={x: x_data}) if i % 100 == 0: print(sess.run(Weight), sess.run(b))print(sess.run(Weight), sess.run(b))# 结束后, 保存变量.if not os.path.exists("save_path"): os.mkdir("save_path")saver.save(sess, "save_path/test.ckpt")sess.close() 基于之前的代码之上添加了 变量的保存和 恢复:
saver = tf.train.Saver({"Weight": Weight})# 还原保存数据 或者 初始化 变量sess.run(init)if os.path.exists("save_path"): saver.restore(sess, "save_path/test.ckpt") for i in range(1000): # 如果直接 用 x_data 传入 y_ = tf.mul(x_data,Weight) 的话, 这里的 feed_dict 是不用赋值的. sess.run(train, feed_dict={x: x_data}) if i % 100 == 0: print(sess.run(Weight), sess.run(b))print(sess.run(Weight), sess.run(b))# 结束后, 保存变量.if not os.path.exists("save_path"): os.mkdir("save_path")saver.save(sess, "save_path/test.ckpt")sess.close() 我暂时不知道怎么去 单独的恢复 一个变量, 只能是先在 恢复当个参数之前 加上 初始化全部参数了 , 这个是生成出来的文件夹. 需要用到 python 的 os 库.
时间: 2024-11-08 00:00:07