• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python高级架构模式知识点总结

    1、残差连接是目前常用的组件,解决了大规模深度学习模型梯度消失和瓶颈问题。

    通常,在10层以上的模型中追加残差连接可能有帮助。

    from keras import layers
     
    x = ...
     
    y = layers.Conv2D(128, 3, activation='relu', padding='same')(x)
    y = layers.Conv2D(128, 3, activation='relu', padding='same')(y)
    y = layers.MaxPooling2D(2, strides=2)(y)
     
    # 形状不同,要做线性变换:
    residual = layers.Conv2D(128, 1, strides=2, padding='same')(x)  # 使用 1×1 卷积,将 x 线性下采样为与 y 具有相同的形状
     
    y = layers.add([y, residual])

    2、标准化用于使模型看到的不同样本更相似,有助于模型的优化和泛化。

    # Conv
    conv_model.add(layers.Conv2D(32, 3, activation='relu'))
    conv_model.add(layers.BatchNormalization())
     
    # Dense
    dense_model.add(layers.Dense(32, activation='relu'))
    dense_model.add(layers.BatchNormalization())

    3、深度可分离卷积层,在Keras中被称为SeparableConv2D,其功能与普通Conv2D相同。

    但是SeparableConv2D比Conv2D轻,训练快,精度高。 

    from tensorflow.keras.models import Sequential, Model
    from tensorflow.keras import layers
     
    height = 64
    width = 64
    channels = 3
    num_classes = 10
     
    model = Sequential()
    model.add(layers.SeparableConv2D(32, 3,activation='relu',input_shape=(height, width, channels,)))
    model.add(layers.SeparableConv2D(64, 3, activation='relu'))
    model.add(layers.MaxPooling2D(2))
     
    model.add(layers.SeparableConv2D(64, 3, activation='relu'))
    model.add(layers.SeparableConv2D(128, 3, activation='relu'))
    model.add(layers.MaxPooling2D(2))
     
    model.add(layers.SeparableConv2D(64, 3, activation='relu'))
    model.add(layers.SeparableConv2D(128, 3, activation='relu'))
    model.add(layers.GlobalAveragePooling2D())
     
    model.add(layers.Dense(32, activation='relu'))
    model.add(layers.Dense(num_classes, activation='softmax'))
     
    model.compile(optimizer='rmsprop', loss='categorical_crossentropy')

    Counter实例扩展:

    from collections import Counter
    
    list1 = ['a','b','c',23,23,'a','d','b','e']
    counter1 = Counter(list1)
    print(counter1)
    print(counter1['a'])
    
    #1.1.1统计不同单词的数目
    print(len(set(list1)))
    
    #1.1.2对统计结果进行分组 下面的方法表示分为4组,不填默认全部分组,以列表
    #存储,里面元素是tuple对象
    print(counter1.most_common(4))
    
    
    #1.1.3 elements()获取Counter()生成对象的所有键名,重复的几个会全部打印
    # 该方法返回一个迭代器对象
    keylist = counter1.elements()
    print(keylist)
    print(list(keylist))
    
    #1.1.4 update(x) 更新计数器 把x的内容加入到原来计数器中
    #x可以作为字符串,列表,元组,集合,但是不能作为字典,纯数字,否则报错
    list2 = ['a','d','f','q',2,3,2,3,4]
    print(counter1)
    counter1.update(list2)
    print(counter1)
    
    #1.1.5 substract(x) 更新计数器 把x代表的次数减少1,默认减少1,(通过字典形式指定一次减少的个数)
    #,不存在则减为-1,依次减,作用与update()相反
    
    counter1.subtract('a')
    print(counter1)
    counter1.subtract(['a','b',2])
    print(counter1)

    到此这篇关于Python高级架构模式知识点总结的文章就介绍到这了,更多相关Python高级架构模式的整理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:python超参数优化的具体方法
    下一篇:Python方差特征过滤的实例分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python高级架构模式知识点总结 Python,高级,架构,模式,知识点,