#保存数据注意他只能保存变量,不能保存神经网络的框架。
#保存数据的作用:保存权重有利于下一次的训练,或者可以用这个数据进行识别
#np.arange():arange函数用于创建等差数组,使用频率非常高
import tensorflow as tf
#注意:在保存变量的时候,一定要写出他的类型即dtype
Weights = tf.Variable([[1,2,3],[3,4,5]],dtype=tf.float32,name="Weights")
baises = tf.Variable([[1,32,3]],dtype=tf.float32,name="baises")

saver = tf.train.Saver()#保存数据和提取数据都需要先创建一个对象,才能使用

init = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(init)
  save_path = saver.save(sess,"E:\\workspace\\tensor\\tensor_data.ckpt")
  '''
  保存数据使用的函数是:saver.save(sess,"保存路径"),他可以返回保存路径
  '''
  print("save_path:",save_path)

#提取数据:这个写在其他的文件的

'''
提取的数据要和保存的数据的shape和type一致
在提取数据的时候,已经不再需要初始化变量了,因为提取数据的时候,他会帮我们自动化初始化了
'''
import tensorflow as tf
import numpy as np
'''
提取数据的时候,变量的类型一定要相同
'''

W = tf.Variable(np.arange(6).reshape((2,3)),dtype=tf.float32,name="Weights")
b = tf.Variable(np.arange(3).reshape((1,3)),dtype=tf.float32,name="baises")

saver = tf.train.Saver()#保存数据和提取数据都需要先创建一个对象,才能使用

with tf.Session() as sess:
  saver.restore(sess,"E:\\workspace\\tensor\\tensor_data.ckpt")
  #提取到的数据会根据数据的类型自动分配到类型相同的数据变量中
  print("weights:",sess.run(W))
  print("baises:",sess.run(b))