TensorFlow

1、【TensorFlow】tf.nn.max_pool实现池化操作(https://blog.csdn.net/mao_xiao_feng/article/details/53453926
https://blog.csdn.net/m0_37586991/article/details/84575325

tf.nn.max_pool(value, ksize, strides, padding, name=None)
参数是四个,和卷积很类似:
第一个参数value:需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape
第二个参数ksize:池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1

第三个参数strides:和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]

第四个参数padding:和卷积类似,可以取'VALID' 或者'SAME'

返回一个Tensor,类型不变,shape仍然是[batch, height, width, channels]这种形式

2、Padding两个模式的区别:SAME and VALID(https://blog.csdn.net/m0_51004308/article/details/114284366)

3、python中的一维卷积conv1d和二维卷积conv2d(https://blog.csdn.net/qq_26552071/article/details/81178932)
给定4维的输入张量和滤波器张量来进行2维的卷积计算。

4、卷积神经网络池化后的特征图大小计算(https://blog.csdn.net/qq_26552071/article/details/81171161
https://blog.csdn.net/aron_conli/article/details/95175757

W:矩阵宽,H:矩阵高,F:卷积核宽和高,P:padding(需要填充的0的个数),N:卷积核的个数,S:步长

width:卷积后输出矩阵的宽,height:卷积后输出矩阵的高
width = (W - F + 2P)/ S + 1
height = (H - F + 2P) / S + 1

当conv2d(), max_pool()中的padding=‘SAME’时,width=W,height=H,当padding=‘valid’时,P=0

输出图像大小:(width,height,N)

池化后的大小
width = (W - F)/ S + 1
height = (H - F) / S + 1

image.png

5、tf.matmul函数用法(https://blog.csdn.net/weixin_41845265/article/details/106863171
函数:tf.matmul
表示:将矩阵 a 乘以矩阵 b,生成a * b

image.png

6、tf.truncated_normal的用法(https://blog.csdn.net/hgnuxc_1993/article/details/117263654)

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) :
shape表示生成张量的维度(a * a),mean是均值,stddev是标准差
这个函数产生正态分布,均值和标准差自己设定。这是一个截断的产生正态分布的函数,生成的值服从具有指定平均值和标准偏差的正态分布,换句话说,产生的值如果与均值的差值大于两倍的标准差则丢弃重新选择。和一般的正态分布的产生随机数据比起来,这个函数产生的随机数与均值的差距不会超过两倍的标准差,但是一般的别的函数是可能的。

在正态分布的曲线中:
横轴区间(μ-σ,μ+σ)内的面积为68.268949%
横轴区间(μ-2σ,μ+2σ)内的面积为95.449974%
横轴区间(μ-3σ,μ+3σ)内的面积为99.730020%

X落在(μ-3σ,μ+3σ)以外的概率小于千分之三,在实际问题中常认为相应的事件是不会发生的,基本上可以把区间(μ-3σ,μ+3σ)看作是随机变量X实际可能的取值区间,这称之为正态分布的“3σ”原则。
在tf.truncated_normal中如果x的取值在区间(μ-2σ,μ+2σ)之外则重新进行选择。这样保证了生成的值都在均值附近。

7、tensorflow之tf.Variable()函数(https://blog.csdn.net/qq_43636375/article/details/108689388
tf.Variable()函数用于创建变量(Variable),变量是一个特殊的张量(),其可以是任意的形状和类型的张量。

注意: 在启动图时(进行操作之前),所有的变量必须被明确定义。变量常用来储存和更新参数,在计算图过程中其值会一直保存至程序运行结束,这点正是区别于一般的张量。一般的Tensorflow张量在运行过程中仅仅是从计算图中流过,并不会被保存下来。涉及到变量的相关操作必须通过session会话控制。

特别注意:在tensorflow的世界里变量的定义和初始化是被分开的。
初始化变量:之前是用tf.initialize_all_variables()函数,但是在2017年3月2号之后,该函数不再使用,用 tf.global_variables_initializer() 替代 tf.initialize_all_variables()

tf.global_variables_initializer()用于初始化所有变量;w.initializer用于初始化单个变量。

8、TensorFlow创建常量(tf.constant)详解(https://blog.csdn.net/csdn_jiayu/article/details/82155224

可以看到第一个值value是必须的,可以是一个数值,也可以是一个列表。
如果是数值:

tensor=tf.constant(1)
为查看结果必须创建一个会话,并用取值函数eval()来查看创建的tensor的值:

sess=tf.Session()
with sess.as_default():
print('结果是:', tensor.eval())

结果是:1

9、tf.nn.dropout()的用法(https://blog.csdn.net/yangfengling1023/article/details/82911306
tf.nn.dropout()是tensorflow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层

Dropout就是在不同的训练过程中随机扔掉一部分神经元。也就是让某个神经元的激活值以一定的概率p,让其停止工作,这次训练过程中不更新权值,也不参加神经网络的计算。但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了

tf.nn.dropout函数说明
tf.nn.dropout(
x,
keep_prob,
noise_shape=None,
seed=None,
name=None
)
参数说明:
x:指输入,输入tensor

keep_prob: float类型,每个元素被保留下来的概率,设置神经元被选中的概率,在初始化时keep_prob是一个占位符, keep_prob = tf.placeholder(tf.float32) 。tensorflow在run时设置keep_prob具体的值,例如keep_prob: 0.5

train的时候才是dropout起作用的时候,test的时候不应该让dropout起作用

10、tf.nn.softmax_cross_entropy_with_logits详解(https://blog.csdn.net/weixin_39568744/article/details/97265990)

https://blog.csdn.net/yhily2008/article/details/80262321

11、tf.train.AdamOptimizer()(https://blog.csdn.net/qq_39852676/article/details/98477214
https://www.cnblogs.com/tingtin/p/12558615.html

https://www.freesion.com/article/6384422785/

init(
learning_rate=0.001,
beta1=0.9,
beta2=0.999,
epsilon=1e-08,
use_locking=False,
name='Adam'
)

参数含义:
learning_rate: A Tensor or a floating point value. (学习率)
beta1: A float value or a constant float tensor. (一阶矩估计的指数衰减率)
beta2: A float value or a constant float tensor. (二阶矩估计的指数衰减率)
epsilon: A small constant for numerical stability. (一个非常小的数,防止除以零)
use_locking: 如果为真,则使用锁进行更新操作。
name: 使用梯度时创建的操作的可选名称,默认为 “Adam”。

12、tf.argmax()的用法(https://blog.csdn.net/qq_35535616/article/details/111139044
https://blog.csdn.net/xufeng930325/article/details/122895016
tf.argmax()的主要功能是找出最大值并返回索引,注意是索引。下面是主要的内参数

import tensorflow as tf
import tensorflow.compat.v1 as tf1
tf1.disable_eager_execution()
a =[[1,2,3],[4,5,6],[1,5,4]]
b = [1,2,3,4,5,6,7,8,9,10,0]

with tf1.Session() as sess:
print(sess.run(tf.argmax(a, 0)))
print(sess.run(tf.argmax(a, 1)))
print(sess.run(tf.argmax(b, 0)))

2020-12-14 09:19:14.848367: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
[1 1 1]
[2 2 1]
9

13、tenflow 入门 tf.equal()用法(https://blog.csdn.net/ustbbsy/article/details/79564529
equal,相等的意思。顾名思义,就是判断,x, y 是不是相等,它的判断方法不是整体判断,
而是逐个元素进行判断,如果相等就是True,不相等,就是False。

import tensorflow as tf
a = [[1,2,3],[4,5,6]]
b = [[1,0,3],[1,5,1]]
with tf.Session() as sess:
print(sess.run(tf.equal(a,b)))

[[ True False True]
[False True False]]

14、tf.cast()函数介绍和示例(https://blog.csdn.net/qq_36512295/article/details/100599954
数据类型转换
import tensorflow as tf

X = tf.constant([1,2,3,4,5], dtype=tf.int32)
Y = tf.cast(X, dtype=tf.float32)

with tf.Session() as sess:
print('X:', sess.run(X))
print('Y:', sess.run(Y))

X: [1 2 3 4 5]
Y: [1. 2. 3. 4. 5.]

15、tf.reduce_mean()函数解析(https://blog.csdn.net/TeFuirnever/article/details/88929223
tf.reduce_mean()函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的平均值,主要用作降维或者计算tensor(图像)的平均值。

import tensorflow as tf

x = [[1,2,3],
[4,5,6]]
y = tf.cast(x, tf.float32)
mean_all = tf.reduce_mean(y)
mean_0 = tf.reduce_mean(y, axis=0)
mean_1 = tf.reduce_mean(y, axis=1)

with tf.Session() as sess:
m_a,m_0,m_1 = sess.run([mean_all, mean_0, mean_1])

print(m_a)
print(m_0)
print(m_1)

3.5
[2.5 3.5 4.5]
[2. 5.]

16、tf.global_variables_initializer()与tf.local_variables_initializer()的区别(https://cloud.tencent.com/developer/article/1454136
tf.global_variables_initializer()添加节点用于初始化所有的变量(GraphKeys.VARIABLES)。返回一个初始化所有全局变量的操作(Op)。在你构建完整个模型并在会话中加载模型后,运行这个节点。
能够将所有的变量一步到位的初始化,非常的方便。通过feed_dict, 你也可以将指定的列表传递给它,只初始化列表中的变量。

tf.local_variables_initializer()返回一个初始化所有局部变量的操作(Op)。初始化局部变量(GraphKeys.LOCAL_VARIABLE)。GraphKeys.LOCAL_VARIABLE中的变量指的是被添加入图中,但是未被储存的变量。

https://blog.csdn.net/qq_39018604/article/details/120833800

必须要使用global_variables_initializer的场合

含有tf.Variable的环境下,因为tf中建立的变量是没有初始化的,也就是在debug时还不是一个tensor量,而是一个Variable变量类型

size_out = 10
tensor = tf.Variable(tf.random_normal(shape=[size_out]))
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init) # initialization variables
print(sess.run(tensor))

可以不适用初始化的场合

不含有tf.Variable、tf.get_Variable的环境下

比如只有tf.random_normal或tf.constant等

size_out = 10
tensor = tf.random_normal(shape=[size_out]) # 这里debug是一个tensor量哦
init = tf.global_variables_initializer()
with tf.Session() as sess:
# sess.run(init) # initialization variables
print(sess.run(tensor))

17、tf.train.Saver() 与tf.train.import_meta_graph要点


image.png

tf.train.import_meta_graph用来加载meta文件中的图,以及图上定义的结点参数包括权重偏置项等需要训练的参数,也包括训练过程生成的中间参数,所有参数都是通过graph调用接口get_tensor_by_name(name="训练时的参数名称")来获取

18、tf.train.latest_checkpoint()自动寻找最新的checkpoint(https://blog.csdn.net/weixin_44305115/article/details/106717518
tf.train.latest_checkpoint()函数的作用查找最新保存的checkpoint文件的文件名(Finds the filename of latest saved checkpoint file.)。
经常与模型加载函数checkpoint.restore()共同使用。

19、saver.save和saver.restore(https://blog.csdn.net/qq_40133431/article/details/121342927)
saver()与restore()只是保存了session中的相关变量对应的值,并不涉及模型的结构。

Saver的作用是将我们训练好的模型的参数保存下来,以便下一次继续用于训练或测试;Restore则是将训练好的参数提取出来。Saver类训练完后,是以checkpoints文件形式保存。提取的时候也是从checkpoints文件中恢复变量。Checkpoints文件是一个二进制文件,它把变量名映射到对应的tensor值 。

一般地,Saver会自动的管理Checkpoints文件。我们可以指定保存最近的N个Checkpoints文件,当然每一步都保存ckpt文件也是可以的,只是没必要,费存储空间。

20、sess.graph.get_tensor_by_name('W_conv1:0')(https://blog.csdn.net/baidu_27643275/article/details/82982889

形如'conv1'是节点名称,而'conv1:0'是张量名称,表示节点的第一个输出张量

https://www.jianshu.com/p/3cee7ca5ebd8

21、获取Tensorflow版本(https://blog.csdn.net/dlhlSC/article/details/56840501)
import tensorflow as tf;
print(tf.version)

22、tf.Graph()(https://blog.csdn.net/william_hehe/article/details/78617994
tf.Graph()
功能:生成新的计算图。
说明:不同计算图上的张量和运算都不会共享。

23、Keras和tensorflow的区别(https://blog.csdn.net/zhangbaoanhadoop/article/details/82111056)

24、

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容