美文网首页
TensorFlow

TensorFlow

作者: 无量儿 | 来源:发表于2022-07-12 12:36 被阅读0次

    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、

    相关文章

      网友评论

          本文标题:TensorFlow

          本文链接:https://www.haomeiwen.com/subject/tbazbrtx.html