paddle.vision.models.resnet18 如何应用在一维时间数据(振动信号)的分类问题中

i7uaboj4  于 5个月前  发布在  其他
关注(0)|答案(9)|浏览(92)

请提出你的问题 Please ask your question

我在官方API看到resnet的调用方式要求输入的数据格式是四维的,如下:

现在我有一份一维的时间信号数据,比如处理完成之后的格式是[200, 1024],第一维是样本个数,第二维是特征,resnet18是否支持这种数据的分类

谢谢!

ie3xauqp

ie3xauqp1#

您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看 官网API文档常见问题历史IssueAI社区 来寻求解答。祝您生活愉快~

Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the APIFAQGithub Issue and AI community to get the answer.Have a nice day!

sgtfey8w

sgtfey8w2#

四维的意思是:
[图片张数batch大小, 图片颜色通道数,图片长度,图片宽度]
现在我有一份一维的时间信号数据,比如处理完成之后的格式是[200, 1024],第一维是样本个数,第二维是特征,resnet18是否支持这种数据的分类

如果特征的维度是1024,可以变成 32 * 32的,可以尝试将输入 reshape 成:
[ 200, 1, 32, 32]

kg7wmglp

kg7wmglp3#

四维的意思是: [图片张数batch大小, 图片颜色通道数,图片长度,图片宽度]
现在我有一份一维的时间信号数据,比如处理完成之后的格式是[200, 1024],第一维是样本个数,第二维是特征,resnet18是否支持这种数据的分类

如果特征的维度是1024,可以变成 32 * 32的,可以尝试将输入 reshape 成: [ 200, 1, 32, 32]

hi 感谢回复,我把输入改成[16,1,32,32]调用resnet18报如下错误,麻烦帮忙看看要怎么调整,谢谢!

xurqigkl

xurqigkl4#

resnet18 这个是定义好的模型,一些参数和你不匹配。这个是nn.Conv2D的参数和你的不匹配。
https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/Conv2D_cn.html#conv2d

https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/vision/models/resnet.py#L238

ycl3bljg

ycl3bljg5#

resnet18 这个是定义好的模型,一些参数和你不匹配。这个是nn.Conv2D的参数和你的不匹配。 https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/Conv2D_cn.html#conv2d

https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/vision/models/resnet.py#L238

那我这个场景下该怎么去调整参数呢

zrfyljdw

zrfyljdw6#

https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/vision/models/resnet.py#L238

self.conv1 = nn.Conv2D(
            3,
            self.inplanes,
            kernel_size=7,
            stride=2,
            padding=3,
            bias_attr=False)

第一个参数改为1即可。kernel_size也可以适当减小一点。

因为你的数据较小,不建议你搞这么大的网络,可以尝试拿Conv2D自己组两三层卷积网络即可。

gxwragnw

gxwragnw7#

https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/vision/models/resnet.py#L238

self.conv1 = nn.Conv2D(
            3,
            self.inplanes,
            kernel_size=7,
            stride=2,
            padding=3,
            bias_attr=False)

第一个参数改为1即可。kernel_size也可以适当减小一点。

因为你的数据较小,不建议你搞这么大的网络,可以尝试拿Conv2D自己组两三层卷积网络即可。

明白了,感谢,我还有两个疑问哈
1、这种改动只能通过修改源码才能完成,不能在调用resnet通过传参的形式改动是吧?
2、咱们目前的resnet只支持2维的卷积,不支持1维的卷积是吧?

谢谢

798qvoo8

798qvoo88#

是的。

resnet是模型级别的东西,处理的都是图片数据。你的数据diff很大,需要修改很多。建议使用 Conv1D 之类的API的组合一个小网络适配你的数据,

yrdbyhpb

yrdbyhpb9#

是的。

resnet是模型级别的东西,处理的都是图片数据。你的数据diff很大,需要修改很多。建议使用 Conv1D 之类的API的组合一个小网络适配你的数据,

了解了,我这个数据是一维的振动信号数据,在工业机械场景中挺常见的,也有不少人研究,网上也有一些基于resnet去做的,paddle 或许也可以考虑下。
再次感谢

相关问题