① reuse=False时,tf.variable_scope创建变量;reuse=True时,tf.variable_scope获取变量。
② tf.get_variable函数不受tf.name_scope的影响
II. TF中有两种作用域类型
命名域 (name scope),通过tf.name_scope 或 tf.op_scope创建;
变量域 (variable scope),通过tf.variable_scope 或 tf.variable_op_scope创建;
这两种作用域,对于使用tf.Variable()方式创建的变量,具有相同的效果,都会在变量名称前面,加上域名称。
对于通过tf.get_variable()方式创建的变量,只有variable scope名称会加到变量名称前面,而name scope不会作为前缀
3 函数原型:hstack(tup) ,参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组:
import numpy as np
a=[1,2,3]
b=[4,5,6]
print(np.hstack((a,b)))
输出:[1 2 3 4 5 6 ]
4 vstack(tup) ,参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组:
import numpy as np
a=[1,2,3]
b=[4,5,6]
print(np.vstack((a,b)))
输出:
[[1 2 3]
[4 5 6]]
5 placeholder(type,shape,name),placeholder里的shape,如果是[None,n] , None 表示要喂的数据大小,可以用矩阵的行来理解,n用矩阵的列来理解。
6 保存神经网络参数到本地,以便下次加载进来,直接使用:
保存方法:Saver.save(ss,fnam,global_step)
ss:表示当前会话,当前会话保存了当前的变量值
fnam:存储的模型文件名,扩展名是“.chpt”,二进制文件
global_step:表示当前是第几步
加载方法:tf.train.Saver.restore(ss,fname)
ss:用于恢复参数的Session
fnam:参数保存的文件名或路径
e.g.
# 保存参数到本地中
saver = tf.train.Saver()
saver.save(ss, 'tmp/m001.ckpt')
# 加载保存到的参数到神经网络
saver = tf.train.Saver()
saver.restore(ss, 'tmp/m001.ckpt')
8 seed( ) 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed( )值,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。
9 numpy的ravel() 和 flatten()函数是将多维数组降位一维,numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响原始矩阵,而numpy.ravel()返回的是视图,会影响原始矩阵。