如何保存来自预训练的torch网络的所有批次数据的特征值?

我现在正在使用来自github的fb torch库fb torch resnet

这是我第一次使用torch和lua,所以我遇到了一些问题。

我的目标是将特定层的特征向量(ResNet的最后平均池化)保存到一个文件中,该文件包括输入图像的类。所有输入图像均来自cifar-10 db。

我想要获取的文件格式如下:

image1.txt := cifar-101个图像的类索引和特征向量
image2.txt := cifar-102个图像的类索引和特征向量
//依此类推,遍历所有cifar-10中的图像

现在,我已经看到了该github的一些示例代码extract-features.lua

因为这是我第一次使用lua,所以我感到很难理解这段代码,并将其修改为我想要的方式。我也不想将我的数据保存为t7文件格式。

1.如何通过lua从torch网络中访问仅一个特定层?(最后的平均池化) 2.如何访问层的值和分类结果索引? 3.如何从cifar-10 db文件(t7 batch)中读取所有图像?

对不起,问题太多了。但是,由于torch社区线程和torch的发布过多,我很难使用torch..请理解我。

点赞
用户6076729
用户6076729

如何通过lua在torch中仅访问网络中的一个特定层(最后的平均池化层)?

要访问每个层,您只需要加载模型并使用整数获取它。如果您执行print model,您将能够看到最后一个平均池化处于哪个位置。

model = torch.load(path_to_model):cuda()
avg_pooling_layer = model:get(position_of_the_avg_pooling_layer)

如何访问层的值和分类结果索引?

我不太明白您的意思。如果您想查看特定图层的输出或权重(按照上面的代码),则需要从_layer_表中获取这些元素。同样,要查看可能要获取的元素,使用print avg_pooling_layer

weights = avg_pooling_layer.weight --获取图层的权重
output = avg_pooling_layer.output  --获取图层的输出

如何从cifar-10 db文件(t7批处理)中读取所有图像?

要从t7文件中读取图像,请使用torch函数torch.load(以前用于加载模型)。

cifar_10 = torch.load("path_to_cifar-10.t7")

读入后,您可以在子表或函数中获得训练集和测试集。同样,打印表并查看需要获取哪些值。

希望这可以帮助您!

2017-02-21 09:00:29