Python高级架构模式知识点总结
作者:小妮浅浅 发布时间:2023-12-19 14:36:47
标签: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)
来源:https://www.py.cn/jishu/jichu/32600.html
0
投稿
猜你喜欢
- vi /etc/freetds/freetds.conf [global]# TDS protocol versiontds version
- 这篇文章主要介绍了Python for循环搭配else常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳。 对于他们的耐心我十分敬佩。 但是作为一个程序员,自然也得挑
- 本文实例讲述了Python使用multiprocessing创建进程的方法。分享给大家供大家参考。具体分析如下:进程可以通过调用multip
- 测试环境Python 3.6.2Win 10 内存 8G,CPU I5 1.6 GHz背景描述这个作品来源于一个日志解析工具的开发,这个开发
- pyecharts显示数据为百分比的柱状图pyecharts是做数据分析的好帮手,柱状图比较简单,网站例子不够多,一般柱状图就是直接传两组数
- 为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用的文件对象占用内存。举个例子,对文本文件
- python记录程序运行时间的三种方法 &nb
- 写在前面的话:此篇还是asp相关的,相信玩ASP的都有这个感觉,当数据有5万多条时-------just like音乐网,要调用最新的10条
- 在技术问答中看到一个这样的问题,感觉相对比较常见,就单开一篇文章写下来。从纯文本格式文件 “file_in”中读取数据,格式如下:需要输出成
- 影响 JavaScript性能的另外一个杀手就是递归,在上一节中提到采用memoization技术可以优化计算数值的递归函数,但memoiz
- 现在的离线浏览器很多,可是多数都是共享软件,或是英文软件,这给我们的操作带来了很大的不便。其实微软的网页制作工具FrontPage XP有一
- 代理模式的优点代理模式可以保护原对象,控制对原对象的访问;代理模式可以增强原对象的功能,通过代理对象来添加一些额外的功能;代理模式可以提高系
- jQuery是最近比较火的一个JavaScript库,从del.icio.us/上相关的收藏可见一斑。到目前为之jQuery已经发布到1.2
- 今天遇到一个需要用javascript将url中的某些参数替换的需求,想起了不久前从网上淘到了一个parseUrl函数,正好可以借此实现,代
- Oracle的分析函数功能非常强大,工作这些年来经常用到。这次将平时经常使用到的分析函数整理出来,以备日后查看。我们拿案例来学习,这样理解起
- [asp] 献一函数:ASP获取ACCESS数据库的表名以及表名对应的字段名和字段类型<%showtable "../dat
- 零基础学习Python的入手方向:1、首先你确定学习Python用来做什么方向,爬虫还是……;2、确定方向后,就按照你喜欢的方式找学习资料;
- 需求我在最近的一个任务中,存在一个redis高并发计算多个客户端接收预警信息的时长问题。模型是首先模拟多个客户端连接预警服务器集群,然后向预
- 本文实例讲述了Python线性拟合实现函数与用法。分享给大家供大家参考,具体如下:1. 参考别人写的:#-*- coding:utf-8 -