使用tensorflow 教程slim固化训练模型报错AttributeError: 'int' object has no attribute 'node'

  1. 前一段时间利用tensorflow 教程object detection跑了一些demo,然后成功的训练了自己的模型这里我把我的方法分享出来,希望能够帮助大家
}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

参考: 给出的解决方案,在调用torch.load的py文件中添加以下代码,自己定义_rebuild_tensor_v2函数:

这种解決版本不兼容冲突的方法也叫作:Monkey Patch猴子补丁。
大概意思就是:在运行时对已有代码进行修改达到hot patch的功能。

}

本文主要是代码的解释用于阐述如何构建网络,载入数据以及微调一个已有数据的网络

工程主要有5个python文件构成,其中:

  • network.py 详细定义网络的不同层的属性
  • assemble.py 用于下載数据文件是一个独立模块

其中model.py定义并返回一个alexnet。关于AlexNet的介绍可以参考网上其他资料在此不赘述
而network.py详细定义Net的每一层实现。茬AlexNet中主要使用的是卷积层conv、归一化层norm、池化层pool以及全连接层fc让我们来了解下各层参数的意义.

  • c_o 通道的输出数目
  • group 按通道进行分组的数目

归一化層在这里使用的是local-response-normal.关于归一化的方式有非常多,这里的归一化方式可以参考论文:
今年来关于Batch-normalize的研究也在推进很大部分网络训练不收斂的问题其实都可以通过norm来解决,只是norm的方式到底什么样子的最好现在还处于研究阶段

本例子中使用的是max-pooling,其作用类似于信号处理中的降采样将核函数区域内的响应最大的数据保留。以此获取最大的感受野

实际上类似函数的重命名方法。op可以代指原本的relu_layer

dataset类用於读取图像及其标签
初始化函数读取train_list以及test_list,将所有的图像路径及其标签保存在内存中这样相比于将所有的图像文件全部读入到内存更加节约空间。但是读取读图像的时候用了opencv的接口如果遇到cv2 import失败的问题请自行安装opencv

next_batch函数返回一个batch_size大小的图像集合。使用opencv作为接口处理图像並将图像缩放裁剪到合适大小

下载并创建数据集。和训练关系不是非常大

由于不是很长,我们直接看代码解析整个流程:

学习步長以及总迭代次数

每个batch的大小batch即每次输入训练的图像的数目

每20次迭代显示一次,每460次迭代测试一次训练结果

输入数据和标签使用palceholder作为輸入数据和标签存放的结构,方便之后更换batch

loss函数和优化方式
这里loss选择的是交叉熵均值优化为梯度下降

评判模型输出结果和真实标签之间嘚差异

载入之前的训练数据(除了fc8层)

}

我要回帖

更多关于 tensorflow slim 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信