参考链接地址:https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/
1、TensorFlow 基础架构
TensorFlow是采用数据流图(data flow graphs)来计算, 所以首先我们得创建一个数据流流图, 然后再将我们的数据(数据以张量(tensor)的形式存在)放在数据流图中计算. 节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组, 即张量(tensor). 训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点, 这就是TensorFlow名字的由来.
2、建造神经网络
2.1 构造添加一个神经层的函数
定义添加神经层的函数 add_layer(),它有四个参数:输入值、输入值大小、输出的大小和激励函数,我们设定默认的激励函数为None。
2.2 构造神经网络并可视化训练
2.3 优化器optimizer
Tensorflow中的优化器会有很多不同的种类。最基本,也是最常用的一种就是GradientDescentOptimizer。在Google搜索输入“tensorflow optimizer”可以看到Tensorflow提供的7种优化器。
3、Tensorboard 可视化好帮手
Step1 绘制图层与其中的参数
对输入层、隐藏层、loss函数、train_step进行图层
A 主要用到两个语法:
- 定义图层:with tf.name_scope() (里面写名字,下面用缩进)
- 定义参数:增加参数变量的属性name
B 保存并执行绘图:
1 保存绘画:tf.summary.FileWriter() 运行程序,生成绘画文件
2 运行绘画1:在CMD中tensorboard --logdir logs设定文件目录
3 打开Google Chrome:http://localhost:6006
Step2 可视化训练过程
1 Distributions——tf.summary.histogram()
制作对Weights 和 biases的变化图标 distributions
Tensorflow中提供了tf.summary.histogram()方法,用来绘制图片,第一个参数是图表的名称,第二个参数是图表要记录的变量
2 Events——tf.summary.scalar()
Loss的变化图和之前设置的方法略有不同。Loss是在tensorboard 的event 下面的,这是由于我们使用的是tf.summary.scalar()方法。
观看loss的变化比较重要. 当你的loss呈下降的趋势,说明你的神经网络训练是有效果的。
Step3 给所有训练图‘合并’——tf.summary.merged_all()
接下来, 开始合并打包。 tf.summary.merge_all() 方法会对我们所有的 summaries 合并到一起
Step4 训练数据
以上这些仅仅可以记录很绘制出训练的图表, 但是不会记录训练的数据。 为了较为直观显示训练过程中每个参数的变化,我们每隔上50次就记录一次结果 , 同时我们也应注意, merged 也是需要run 才能发挥作用的。
4、Classification 分类学习
Step1 首先准备数据库(MNIST)
Step2 构建网络类型
Step3 建立loss函数
Step4 train方法
Step5 train并输出结果
Summary 完整代码
5、dropout 理解dropout是什么
6、什么是CNN神经网络
定义weights(shape)、bias(shape)、conv2d(x, W)、max_pool_2x2(x)
7、搭建CNN神经网络——添加神经层
conv1 layer、conv2 layer、func1 layer、func2 layer
8、保存和读取
——tf.train.Saver()
python代码如下:
####################### lesson 1 开始 ###########################
#import tensorflow as tf
#import numpy as np
#
#x_data = np.random.rand(100).astype(np.float32)
#y_data = x_data*0.1 + 0.3
#
#Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
#biases = tf.Variable(tf.zeros([1]))
#
#y = Weights * x_data + biases
#
#loss = tf.reduce_mean(tf.square(y-y_data))
#
#optimizer = tf.train.GradientDescentOptimizer(0.5)
#train = optimizer.minimize(loss)
#
#init = tf.global_variables_initializer()
#
#sess = tf.Session()
#sess.run(init)
#
#for step in range(200):
# sess.run(train)
# if step % 20 == 0:
# print(step,sess.run(Weights), sess.run(biases))
####################### lesson 1 结束 ###########################
####################### lesson 2 Session 开始 ###########################
#import tensorflow as tf
#
#matrix1 = tf.constant([[3, 2]])
#matrix2 = tf.constant([[2],
# [2]])
#
#product = tf.matmul(matrix1, matrix2)
#
##method 1
#sess = tf.Session()
#result1 = sess.run(product)
#sess.close()
#print(result1)
#
#
##method 2
#with tf.Session() as sess:
# result2 = sess.run(product)
#print(result2)
####################### lesson 2 Session 结束 ###########################
####################### lesson 3 Variable 开始 ###########################
#import tensorflow as tf
#
#state = tf.Variable(0, name = "counter")
#one = tf.constant(1)
#
#new_value = tf.add(state, one)
#
#update = tf.assign(state, new_value)
#
#init = tf.global_variables_initializer()
#
#with tf.Session() as sess:
# sess.run(init)
# for _ in range(4):
# sess.run(update)
# print(sess.run(state))
#
## 注意 直接写print(state) 不起作用!!
##1
##2
##3
##4
####################### lesson 3 Variable 结束 ###########################
####################### lesson 4 placeholder - feed_dict 开始 ###########################
#import tensorflow as tf
#
#input1 = tf.placeholder(tf.float32)
#input2 = tf.placeholder(tf.float32)
#
#output = tf.multiply(input1, input2)
#
#with tf.Session() as sess:
# print(sess.run(output, feed_dict= {input1:[2.], input2:[4.]}))
####################### lesson 4 placeholder - feed_dict 开始 ###########################
####################### lesson 5 Activation Function 开始 ###########################
#激励函数运行时激活神经网络中某一部分神经元,将激活信息向后传入下一层的神经系统。激励函数的实质是非线性方程。
#Tensorflow 的神经网络里面处理较为复杂的问题时都会需要运用激励函数 activation function 。
####################### lesson 5 Activation Function 结束 ###########################
####################### lesson 6 add_layer 开始 ###########################
#import tensorflow as tf
#
#def add_layer(inputs, in_size, out_size, activation_function= None):
#
# Weights = tf.Variable(tf.random_normal([in_size, out_size]))
# baises = tf.Variable(tf.zeros([1, out_size]) + 0.1)
#
# Wx_plus_b = tf.matmul(inputs, Weights) + baises
#
# if not activation_function: # if activation_function is None:
# output = Wx_plus_b
# else:
# output = activation_function(Wx_plus_b)
#
# return output
####################### lesson 6 add_layer 结束 ###########################
####################### lesson 7 create_NN 开始 ###########################
#import tensorflow as tf
#import numpy as np
#
#def add_layer(inputs, in_size, out_size, activation_function= None):
#
# Weights = tf.Variable(tf.random_normal([in_size, out_size]))
# baises = tf.Variable(tf.zeros([1, out_size]) + 0.1)
# Wx_plus_b = tf.matmul(inputs, Weights) + baises
# if not activation_function: # if activation_function is None:
# output = Wx_plus_b
# else:
# output = activation_function(Wx_plus_b)
#
# return output
#
#x_data = np.linspace(-1, 1, 300)[:,np.newaxis]
#noise = np.random.normal(0, 0.05, x_data.shape)
#y_data = np.square(x_data) - 0.5 + noise
#
#xs = tf.placeholder(tf.float32, [None, 1])
#ys = tf.placeholder(tf.float32, [None, 1])
#
#l1 = add_layer(xs, 1, 10, activation_function = tf.nn.relu)
#prediction = add_layer(l1, 10, 1, activation_function = None)
#
#loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]))
#
#train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
#
#init = tf.global_variables_initializer()
#sess = tf.Session()
#sess.run(init)
#
#for step in range(1000):
# sess.run(train_step, feed_dict = {xs:x_data, ys:y_data})
# if step % 50 == 0:
# print(step, sess.run(loss, feed_dict = {xs:x_data, ys:y_data}))
####################### lesson 7 create_NN 结束 ###########################
####################### lesson 8 create_NN and visulable 开始 ###########################
#
#import tensorflow as tf
#import numpy as np
#import matplotlib.pyplot as plt
#
#def add_layer(inputs, in_size, out_size, activation_function= None):
#
# Weights = tf.Variable(tf.random_normal([in_size, out_size]))
# baises = tf.Variable(tf.zeros([1, out_size]) + 0.1)
# Wx_plus_b = tf.matmul(inputs, Weights) + baises
# if not activation_function: # if activation_function is None:
# output = Wx_plus_b
# else:
# output = activation_function(Wx_plus_b)
#
# return output
#
#x_data = np.linspace(-1, 1, 300)[:,np.newaxis]
#noise = np.random.normal(0, 0.05, x_data.shape)
#y_data = np.square(x_data) - 0.5 + noise
#
#xs = tf.placeholder(tf.float32, [None, 1])
#ys = tf.placeholder(tf.float32, [None, 1])
#
#l1 = add_layer(xs, 1, 10, activation_function = tf.nn.relu)
#prediction = add_layer(l1, 10, 1, activation_function = None)
#
#loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]))
#
#train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
#
#init = tf.global_variables_initializer()
#sess = tf.Session()
#sess.run(init)
#
#
#fig = plt.figure()
#ax = fig.add_subplot(1,1,1)
#ax.scatter(x_data, y_data)
#plt.ion()
##plt.show(block=False)
#
#for step in range(1000):
# sess.run(train_step, feed_dict = {xs:x_data, ys:y_data})
## try:
## ax.lines.remove(lines[0])
## except Exception:
## pass
# if step % 50 == 0:
## print(step, sessS.run(loss, feed_dict = {xs:x_data}))
# prediction_value = sess.run(prediction, feed_dict = {xs:x_data})
# lines = ax.plot(x_data, prediction_value, '-r', lw=3)
# plt.pause(0.1)
# ax.lines.remove(lines[0])
####################### lesson 8 create_NN and visulable 结束 ###########################
####################### lesson 9 tensorboard_structure 开始 ###########################
#
#
#import tensorflow as tf
#import numpy as np
#import matplotlib.pyplot as plt
#
#
#def add_layer(inputs, in_size, out_size, activation_function=None):
# with tf.name_scope('layer'):
# with tf.name_scope('weights'):
# Weights = tf.Variable(tf.random_normal([in_size, out_size]), name='W')
# with tf.name_scope('biases'):
# biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='b')
# with tf.name_scope('Wx_plus_b'):
# Wx_plus_b = tf.matmul(inputs, Weights) + biases
#
# if not activation_function:
# outputs = Wx_plus_b
# else:
# outputs = activation_function(Wx_plus_b)
# return outputs
#
#
#x_data = np.linspace(-1, 1, 300, dtype=np.float32)[:, np.newaxis] # [:, np.newaxis] 转换成列向量
#noise = np.random.normal(0, 0.05, x_data.shape).astype(np.float32)
#y_data = np.square(x_data) - 0.5 + noise
#
#with tf.name_scope('inputs'):
# xs = tf.placeholder(tf.float32, shape=[None, 1], name = 'x_input')
# ys = tf.placeholder(tf.float32, shape=[None, 1], name = 'y_input')
#
#l1 = add_layer(xs, 1, 10, activation_function=tf.nn.sigmoid)
#
#prediction = add_layer(l1, 10, 1, activation_function=None)
#
#with tf.name_scope('loss'):
# loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]), name='loss')
#
#with tf.name_scope('train'):
# train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
#
#sess = tf.Session()
#writer = tf.summary.FileWriter("logs/", sess.graph)
## 初始化 tensorflow 变量,并用会话激活
#init = tf.global_variables_initializer()
#sess.run(init)
####################### lesson 9 tensorboard_structure 结束 ###########################
####################### lesson 10 tensorboard_training 开始 ###########################
#import tensorflow as tf
#import numpy as np
#import matplotlib.pyplot as plt
#
## 定义一个方法,用于构建神经层
#def add_layer(inputs ,
# in_size,
# out_size,n_layer,
# activation_function=None):
# ## add one more layer and return the output of this layer
# layer_name='layer%s'%n_layer
# with tf.name_scope('layer'):
# with tf.name_scope('weights'):
# Weights = tf.Variable(tf.random_normal([in_size, out_size]),name='W')
# # tf.histogram_summary(layer_name+'/weights',Weights)
# tf.summary.histogram(layer_name + '/weights', Weights) # tensorflow >= 0.12
#
# with tf.name_scope('biases'):
# biases = tf.Variable(tf.zeros([1,out_size])+0.1, name='b')
# # tf.histogram_summary(layer_name+'/biase',biases)
# tf.summary.histogram(layer_name + '/biases', biases) # Tensorflow >= 0.12
#
# with tf.name_scope('Wx_plus_b'):
# Wx_plus_b = tf.add(tf.matmul(inputs,Weights), biases)
#
# if activation_function is None:
# outputs=Wx_plus_b
# else:
# outputs= activation_function(Wx_plus_b)
#
# # tf.histogram_summary(layer_name+'/outputs',outputs)
# tf.summary.histogram(layer_name + '/outputs', outputs) # Tensorflow >= 0.12
#
# return outputs
#
## 主体方法
## 构建所需的数据. 这里的x_data 和y_data 并不是严格的一元二次函数的关系#,因为我们在这里加了一个noise,这样看起来更真实
#x_data = np.linspace(-1, 1, 300, dtype=np.float32)[:, np.newaxis]
#noise = np.random.normal(0, 0.05, x_data.shape).astype(np.float32)
#y_data = np.square(x_data) - 0.5 + noise
#
## 数据可视化,用散点图画出真实数据
#fig = plt.figure()
#ax = fig.add_subplot(1,1,1) # 连续性画图,需要用到add_subplot(编号)
#ax.scatter(x_data, y_data) # 获取点
#plt.ion() # plt原本会暂停程序,加上这句就不会暂停了
## plt.show(block = False)
#
## 定义输入占位符
## 利用占位符tf.placeholder()定义我们所需的神经网络的输入.这里的None代表无论输入有多少都可以,因为输入只有一个特征,所有这里是1.
#with tf.name_scope('inputs'):
# xs = tf.placeholder(tf.float32, shape=[None, 1], name= 'x_input')
# ys = tf.placeholder(tf.float32, shape=[None, 1], name= 'y_input')
#
## 默认一个输入(维度1),定义一个隐藏层,一个输出层
## l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)
#l1 = add_layer(xs, 1, 10, n_layer=1, activation_function = tf.nn.relu)
## 增加输出层
#prediction = add_layer(l1, 10, 1,n_layer=2, activation_function = None)
## 定义误差函数
#with tf.name_scope('loss'):
# loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]), name= 'loss')
# tf.summary.scalar('loss', loss) # tensorflow >= 0.12
#
## 选取梯度下降优化器进行训练, 很关键的一步,如何让机器学习提升它的准确率
## tf.train.GradientDescentOptimizer()中的值通常都小于1,这里取的是0.1,代表以0.1的效率来最小化误差loss
## optimizer = tf.train.GradientDescentOptimizer(0.1)
## train_step = optimizer.minimize(loss)
#with tf.name_scope('train'):
# train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
#
## 定义会话控制Session
#sess = tf.Session()
#
## 开始合并打包
#merged = tf.summary.merge_all()
#
#writer = tf.summary.FileWriter('logs/', sess.graph)
#
## 初始化 tensorflow 变量,并用会话激活
#init = tf.global_variables_initializer()
#sess.run(init)
#
## 开始训练
#for step in range(1000):
# sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
# if step % 50 ==0:
# rs = sess.run(merged, feed_dict= {xs: x_data, ys: y_data})
# writer.add_summary(rs, step)
####################### lesson 10 tensorboard_training 结束 ###########################
####################### lesson 10 classification 开始 ###########################
#import tensorflow as tf
#from tensorflow.examples.tutorials.mnist import input_data
#
## 添加层的方法
#def add_layer(inputs, in_size, out_size, n_layer, activation_function=None):
# layer_name = 'layer%s' %(n_layer)
# Weights = tf.Variable(tf.random_normal([in_size, out_size]))
# biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, )
# Wx_plus_b = tf.matmul(inputs, Weights) + biases
# if activation_function == 0:
# outputs = Wx_plus_b
# else:
# outputs = activation_function(Wx_plus_b)
# return outputs
#
## 计算精确度的方法
#def compute_accuracy(v_xs, v_ys):
# global prediction
# y_pre = sess.run(prediction, feed_dict={xs: v_xs})
# correct_prediction = tf.equal(tf.argmax(y_pre, 1), tf.argmax(v_ys, 1))
# accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
# result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys})
# return result
#
## 装载数据
#mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
#
## 定义输入占位符
#xs = tf.placeholder(tf.float32, [None, 784])
#ys = tf.placeholder(tf.float32, [None, 10])
#
## 神经网络结构,一层
#prediction = add_layer(xs, 784, 10, n_layer=1, activation_function=tf.nn.softmax)
#
## loss函数
#cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction), reduction_indices=[1]))
#
## 训练方法 sgd
#train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
#
## 定义会话控制
#sess = tf.Session()
#
## 激活变量
#init = tf.global_variables_initializer()
#sess.run(init)
#
## 开始训练
#for step in range(1000):
# batch_xs, batch_ys = mnist.train.next_batch(100)
# sess.run(train_step, feed_dict={xs: batch_xs, ys: batch_ys})
# if step % 50 == 0:
# print(compute_accuracy(mnist.test.images, mnist.test.labels))
####################### lesson 10 classification 结束 ###########################
####################### lesson 11 dropout 开始 ###########################
#import tensorflow as tf
#from sklearn.datasets import load_digits
#from sklearn.model_selection import train_test_split
#from sklearn.preprocessing import LabelBinarizer
#
## load data
#digits = load_digits()
#X = digits.data # 载入0——9的数字图片
#y = digits.target
#y = LabelBinarizer().fit_transform(y) # 将y变成binary
#X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3) # 分成训练集和测试集, test_size= .3 代表测试数据集占总数据集的比例为0.3
#
#
#def add_layer(inputs, in_size, out_size, layer_name, activation_function=None, ):
# # add one more layer and return the output of this layer
# Weights = tf.Variable(tf.random_normal([in_size, out_size]))
# biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, )
# Wx_plus_b = tf.matmul(inputs, Weights) + biases
# Wx_plus_b = tf.nn.dropout(Wx_plus_b, keep_prob)
# if activation_function is None:
# outputs = Wx_plus_b
# else:
# outputs = activation_function(Wx_plus_b, )
# tf.summary.histogram(layer_name + '/outputs', outputs) # 观察outputs的histogram数据
# return outputs
#
#
## define placeholder for inputs to network
#keep_prob = tf.placeholder(tf.float32) # 定义 dropout 的值, 保持的可能性
#xs = tf.placeholder(tf.float32, [None, 64]) # 8x8 x_data 的数据为 64位
#ys = tf.placeholder(tf.float32, [None, 10]) # 输出数据 为 10 位
#
## add output layer
#l1 = add_layer(xs, 64, 100, 'l1', activation_function=tf.nn.tanh) # 第一层(输入层和隐藏层)的inputs=xs,in_size=64,out_size=100,激励函数为tanh
#prediction = add_layer(l1, 100, 10, 'l2', activation_function=tf.nn.softmax) # 第二层(隐藏层和输出层)的inputs=l1,in_size=100,out_size=10,激励函数为softmax
## the loss between prediction and real data
#cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction),
# reduction_indices=[1])) # loss
#tf.summary.scalar('loss', cross_entropy) # 用tensorboard中的event 观察 loss 的损失情况
#train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
#
#sess = tf.Session()
#merged = tf.summary.merge_all()
## summary writer goes in here
#train_writer = tf.summary.FileWriter("logs/train", sess.graph)
#test_writer = tf.summary.FileWriter("logs/test", sess.graph)
#
#sess.run(tf.global_variables_initializer())
#
#for i in range(500):
# sess.run(train_step, feed_dict={xs: X_train, ys: y_train, keep_prob: 0.4})
# if i % 50 == 0:
# # record loss
# train_result = sess.run(merged, feed_dict={xs: X_train, ys: y_train, keep_prob: 1})
# test_result = sess.run(merged, feed_dict = {xs: X_train, ys: y_train, keep_prob: 1})
# train_writer.add_summary(train_result)
# test_writer.add_summary(test_result)
####################### lesson 11 dropout 结束 ###########################
####################### lesson 12 tf-18 CNN_1 开始 ###########################
#import tensorflow as tf
#from tensorflow.examples.tutorials.mnist import input_data
## number 1 to 10 data
#mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
#
#def compute_accuracy(v_xs, v_ys):
# global prediction
# y_pre = sess.run(prediction, feed_dict={xs: v_xs, keep_prob: 1})
# correct_prediction = tf.equal(tf.argmax(y_pre,1), tf.argmax(v_ys,1))
# accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
# result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys, keep_prob: 1})
# return result
#
#def weight_variable(shape):
# initial = tf.truncated_normal(shape, stddev= 0.1)
# return tf.Variable(initial)
#
#def bias_variable(shape):
# initial = tf.constant(0.1, shape=shape)
# return tf.Variable(initial)
#
#def conv2d(x, W):
# return tf.nn.conv2d(x, W, strides=[1,1,1,1], padding='SAME')
#
#def max_pool_2x2(x):
# return tf.nn.max_pool(x, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')
#
## define placeholder for inputs to network
#xs = tf.placeholder(tf.float32, [None, 784]) # 28x28
#ys = tf.placeholder(tf.float32, [None, 10])
#keep_prob = tf.placeholder(tf.float32)
#
### conv1 layer ##
### conv2 layer ##
### func1 layer ##
### func2 layer ##
#
## the error between prediction and real data
#cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction),
# reduction_indices=[1])) # loss
#train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
#
#sess = tf.Session()
## important step
#sess.run(tf.initialize_all_variables())
#
#for i in range(1000):
# batch_xs, batch_ys = mnist.train.next_batch(100)
# sess.run(train_step, feed_dict={xs: batch_xs, ys: batch_ys, keep_prob: 0.5})
# if i % 50 == 0:
# print(compute_accuracy(
# mnist.test.images, mnist.test.labels))
####################### lesson 12 tf-18 CNN_1 结束 ###########################
####################### lesson 13 tf-19 CNN_2 开始 ###########################
#import tensorflow as tf
#from tensorflow.examples.tutorials.mnist import input_data
## number 1 to 10 data
#mnist = input_data.read_data_sets('MNIST_data', one_hot=True)
#
#def compute_accuracy(v_xs, v_ys):
# global prediction
# y_pre = sess.run(prediction, feed_dict={xs: v_xs, keep_prob: 1})
# correct_prediction = tf.equal(tf.argmax(y_pre,1), tf.argmax(v_ys,1))
# accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
# result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys, keep_prob: 1})
# return result
#
#def weight_variable(shape):
# initial = tf.truncated_normal(shape, stddev= 0.1)
# return tf.Variable(initial)
#
#def bias_variable(shape):
# initial = tf.constant(0.1, shape=shape)
# return tf.Variable(initial)
#
#def conv2d(x, W):
# return tf.nn.conv2d(x, W, strides=[1,1,1,1], padding='SAME')
#
#def max_pool_2x2(x):
# return tf.nn.max_pool(x, ksize=[1,2,2,1], strides=[1,2,2,1], padding='SAME')
#
## define placeholder for inputs to network
#xs = tf.placeholder(tf.float32, [None, 784]) # 28x28
#ys = tf.placeholder(tf.float32, [None, 10])
#keep_prob = tf.placeholder(tf.float32)
#x_image = tf.reshape(xs, [-1,28,28,1])
#
### conv1 layer ##
#W_conv1 = weight_variable([5,5, 1,32])
#b_conv1 = bias_variable([32])
#h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
#h_pool1 = max_pool_2x2(h_conv1)
#
### conv2 layer ##
#W_conv2 = weight_variable([5,5, 32,64])
#b_conv2 = bias_variable([64])
#h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
#h_pool2 = max_pool_2x2(h_conv2)
### func1 layer ##
#W_fc1 = weight_variable([7*7*64, 1024])
#b_fc1 = weight_variable([1024])
#h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])
#h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)
#h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)
### func2 layer ##
#W_fc2 = weight_variable([1024, 10])
#b_fc2 = weight_variable([10])
#prediction = tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)
## the error between prediction and real data
#cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction),
# reduction_indices=[1])) # loss
#train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
#
#sess = tf.Session()
## important step
#sess.run(tf.tf.global_variables_initializer())
#
#for i in range(1000):
# batch_xs, batch_ys = mnist.train.next_batch(100)
# sess.run(train_step, feed_dict={xs: batch_xs, ys: batch_ys, keep_prob: 0.5})
# if i % 50 == 0:
# print(compute_accuracy(
# mnist.test.images, mnist.test.labels))
####################### lesson 13 tf-19 CNN_2 结束 ###########################
####################### lesson 14 tensorflow-saver.save_保存 开始 ###########################
#import tensorflow as tf
#
## Save to file
## remember to define the same dtype and shape when restore
#W = tf.Variable([[1,2,3],[3,4,5]], dtype=tf.float32, name="weights")
#b = tf.Variable([[1,2,3], dtype= tf.float32, name="biases"])
#
#init = tf.global_variables_initializer()
#
#saver = tf.train.Saver()
#
#with tf.Session as sess:
# sess.run(init)
# save_path = saver.save(sess, "my_net/save_net.ckpt")
# print("Save to path:", save_path)
####################### lesson 14 tensorflow-saver.save_保存 结束 ###########################
####################### lesson 15 tensorflow-saver.restore_提取 开始 ###########################
import tensorflow as tf
import numpy as np
# restore variables
# redefine the same shape and same type for your variables
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="biases")
# not define init
saver = tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess, "my_net/save_net.ckpt")
print("weights:", sess.run(W))
print("biases:", sess.run(b))
####################### lesson 15 tensorflow-saver.restore_提取 结束 ###########################