01.模型到底是什么?由 aipwn2021-02-242021-10-09神经网络攻防常听做算法的同学说算法模型,那模型到底是什么呢? 具体来讲,狭义的机器学习模型或者深度学习模型是一个文件,它在经过训练后可以识别特定类型的模式。对模型进行训练后,可以使用它根据之前未见过的数据进行推理,并对这些数据进行预测。 假设你要构建一个应用程序,该应用程序可以根据用户的面部表情识别用户的情感。可以为模型提供具有特定情感标记的面部图像,对模型进行训练,然后即可在能够识别任何用户情感的应用程序中使用该模型。 问题:既然模型是一个文件,如果我拿到了一个模型文件,可以得到哪里信息? 我们以一个例子开始,在专栏的Github项目中我提供了三个model文件,分别为: – model.h5 keras保存的模型 – model.pb TF保存的模型 – model.pt Pytorch保存的模型 大家可以去Github下载这三个文件,以供后面的练习。 首先,模型文件的泄露其实相当于有一部分的源代码泄露了。我们可以从模型文件中得到很多信息。 以model.h5为例,h5是keras支持的模型文件格式之一,它将网络结构和权重,模型训练的配置,优化器等信息都保存了下来,优点就是操作方便,缺点就是模型文件很大。keras也可以只保存权重,不保存网络结构,大家可以去了解一下。 H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5),它是用于存储科学数据的一种文件格式和库文件。我们可以使用工具来打开H5格式的文件,这里推荐一下HDFView。 打开model.h5之后,可以看到有模型的结构,模型的权重还有优化器的权重等信息。 单独看model_weights,H5格式是组织得非常好的一种层次结构 点击layer_names可以看到模型的层 单击查看第一层conv2d_1中的bias:0 的权重 点击optimizer_weights查看训练的信息 从被打开的模型文件中可以得到很多信息,包括 网络结构:Conv — Conv — MaxPool — Dense — Dense 优化器: Adadelta 任务: 猜测图像分类 还有更多的信息等着你自己去探索吧。总之拿到这些信息之后,想要复现这个模型是非常容易的。 那如果不是H5模型文件怎么办?那就需要手动使用框架加载并打印或者导出权重等信息。不过有个开源工具帮你解决了这个问题,并可视化出来,它就是netron。下图是它的界面: netron现在支持很多框架保存下来的模型文件格式,通用性已经算比较好。 netron项目Github地址: https://github.com/lutzroeder/netron 这次的练习就是用netron打开剩下的两个模型,看看能从文件中得到什么信息。 本专栏Github地址: https://github.com/AIPwn/HackingNeuralNetworks 这是《神经网络攻防》专栏的第一篇,下一篇,我们将谈论一下怎么攻击模型的输出层,欢迎关注。 往期回顾: 文本对抗攻击工具:OpenAttack试用 DeepFake系列——TweepFake:DeepFake推文检测 (选学)神经网络攻防 | 机器学习预备知识(一) 开篇词——你所不知道的神经网络攻防 标签:神经网络攻防 发表评论 取消回复 上一个DeepFake系列——TweepFake:DeepFake推文检测下一个02.攻击模型的输出层