AI同上课-4(全下载)|数据结构初步+卷积核:纸上谈兵后须配实验

AI 新资讯18小时前发布
777 0 0
熊猫办公
【背景】
在备AI课时,正好群里老师分享基于AI平台的教学,大家交流讨论了一些问题,具体先不叙述,以后再谈。仅就我个人最近在一个研讨会交流的观点供大家参考。
问题:只纸上谈兵,既使是再重要的知识,在信息科技这门课来说,学生的接受度是很低的。比如,以往的二进制,一点点计算,学生从小学到大,还是体会不到,原因自然是认知上有难度啊。
可是:并不在少数的,特别是年龄偏大,或者专业偏理的认为纸上谈兵很重要。理由嘛,当然认为科比技重要吧?
建议:在一线,如果是纸上谈兵,须配点实验,让学生可用、可见会更易理解。比如卷积计算,无电教学的学生拿个小纸板手工去计算,不论小学、初中还是高中,会计算本来不容易,计算作什么呢?这才是关键!
举例:不同的卷积核的实验,可自我修改卷积核,实验时可以放大观看细节。
AI同上课-4(全下载)|数据结构初步+卷积核:纸上谈兵后须配实验
AI同上课-4(全下载)|数据结构初步+卷积核:纸上谈兵后须配实验
【教学过程】
环节1.在技术实验中认识卷积核的作用
学生对直观的感受还是非常有兴趣的。
AI同上课-4(全下载)|数据结构初步+卷积核:纸上谈兵后须配实验
AI同上课-4(全下载)|数据结构初步+卷积核:纸上谈兵后须配实验
AI同上课-4(全下载)|数据结构初步+卷积核:纸上谈兵后须配实验
学生先实验不同的卷积核的图片处理,再以自定义卷积实验核观察效果。
环节2:简单数据结构,列表、元组、字典、数组、矩阵的特点与应用。

# 导入numpy库(用于数组和矩阵)importnumpy as np
#=====================1. 列表List(最常用、可修改)=====================print("===== 1. 列表 List =====")fruit=["苹果","香蕉","橙子","葡萄"]print("原始列表:", fruit)
fruit[1]="芒果"fruit.append("西瓜")del fruit[0]print("修改后的列表:", fruit)print("列表用途:存放可随意修改的一组数据
")

#=====================2. 元组Tuple(不可修改、固定)=====================print("===== 2. 元组 Tuple =====")color=("红色","蓝色","绿色","黄色")print("原始元组:", color)print("元组取值:", color[2])print("元组用途:存放固定不变的数据(如坐标、配置信息)
")


#=====================3. 字典Dict(学号当键,3个同学数据)=====================print("===== 3. 字典 Dict =====")# 键:学号 | 值:同学信息(姓名、年龄、班级、成绩)student={ "2026001": {"姓名":"小明","年龄":18,"班级":"高一18班","成绩":95}, "2026002": {"姓名":"小红","年龄":17,"班级":"高一18班","成绩":98}, "2026003": {"姓名":"小刚","年龄":18,"班级":"高一18班","成绩":92}}
print("全部学生数据(学号为键):")forid, infoinstudent.items(): print(f"学号 {id}:{info}")

# 根据学号快速查询同学print("
按学号查询(2026002):", student["2026002"])
print("字典用途:按唯一标识(学号)快速查找数据
")


#=====================4. 数组Array(数值专用、计算快)=====================print("===== 4. 数组 Array =====")num=np.array([1,2,3,4,5])print("原始数组:", num)new=num*2print("数组整体 ×2:", new)print("数组用途:专门做数值计算、数学运算
")



#=====================5. 矩阵Matrix+卷积=====================print("===== 5. 矩阵 Matrix =====")score=np.matrix([ [8,9,9], [7,8,8], [9,5,7]])print("3行3列成绩矩阵:")print(score)print("矩阵/100:")print(score/100)

#=====================最终总结=====================print("="*50)print("【核心区别总结】")print("1. 列表[]:可修改,通用数据")print("2. 元组():不可修改,固定数据")print("3. 字典{}:键值对,按学号/名字查数据")print("4. 数组np.array:数值专用,计算快")print("5. 矩阵np.matrix:二维表格,数学运算")

环节3:拓展卷积的计算方法,讲授与体验。

# 拓展# ===================== 纯循环卷积 =====================print("
====== 卷积计算(纯循环实现) ======")
k = np.matrix([[-1,1], [0,1]])print("卷积核:
",k)
img = np.array(score)k2 = np.array(k)h, w = img.shapekh, kw = k2.shapeout_h = h - kh +1out_w = w - kw +1m = np.zeros((out_h, out_w), dtype=int)# 0矩阵#print(m)foriinrange(out_h): forjinrange(out_w): window = img[i:i+kh, j:j+kw] m[i, j] = np.sum(window * k2)print("循环卷积结果:")print(m)# ===================== scipy 卷积(修复版!手动翻转核) =====================importnumpyasnpfromscipy.signalimportconvolve2dprint("
====== 卷积计算(scipy 修复版) ======")
# 关键:手动翻转卷积核 180°,让结果和循环完全一致!k_flipped = np.flipud(np.fliplr(k))conv = convolve2d(score, k_flipped, mode='valid')print("scipy 卷积结果:")print(conv)print("="*50)print("✅ 两个结果现在完全一样!")

环节4:作业,列表考点自我分析。


# ===================== 1. 列表 List(最常用、可修改) =====================print("===== 1. 列表 List =====")fruit= ["苹果","香蕉","橙子","葡萄","橙子"]print("原始列表:", fruit)fruit.append("西瓜")print("修改后的列表:", fruit)print("列表用途:存放可随意修改的一组数据
")

#作业:枚举算法查找橙子d=-1foriinfruit: d=( ) # 填空 if i=="橙子": print("橙子位置:",d)
print('-'*20)
ford in range(len(fruit)): if fruit[ ]=="橙子": # 填空 print("橙子位置:",d)

环节5:教师演示实验,神经网络卷积图像特征
(1)不同水果特征提取与对比
了解卷积生成特征向量。
AI同上课-4(全下载)|数据结构初步+卷积核:纸上谈兵后须配实验
(2)相同水果特征提取对比
观察相似度与之前的差别。
AI同上课-4(全下载)|数据结构初步+卷积核:纸上谈兵后须配实验
思考:相似度的计算方式。
拓展:深度学习提取特征对比与深度学习模型识别的差异。模型训练方式,以前学习过,再一节可以再进一步实验对比。
注:解决老机器的Python库装问题,的一个好办法是打包成EXE。因为原来的打包程序失败,我采用了腾讯龙虾完成,非常顺利,供参考。
AI同上课-4(全下载)|数据结构初步+卷积核:纸上谈兵后须配实验
下载:阅读原文
说明:本例资源公益分享~敬请指教!也欢迎大家根据自己需求,积极氛围编程,将您好的设计或想法实名联系我公益分享吧!
© 版权声明

相关文章