最近在拿mindspore复现一个增量学习的分类任务,我这个用于分类的卷积网络会处理多个任务,后一个任务会对前一个任务模型的某几个卷积层进行拓宽(扩大输出通道数),其他层不变(继续使用前一个任务模型的权重等网络参数)
pytorch的修改模型方法就是:直接修改前一个任务指定卷积层的in/out_channels,同时修改.weight.data成新的形状。
mindspore里也可以修改前一个任务卷积层的in/out_channels,然后取原本卷积层parameter的权重进行张量变换,并用set_data来重设卷积层的parameter。而且打印model和model.get_parameters,都显示卷积层好像是被修改成功了(in_channels为新值,parameter形状也变了)。但是当我model(image)时,前向传播到我修改的卷积层的时候就报错了。
因此想请问下有没有比较适合实现对卷积网络进行修改的方法?(看官方文档的ops.assign是得保证参数形状不变,所以用不了;然后mindspore.rewrite感觉相对贴切?但是暂未尝试,因为不太清楚新节点能否继承好旧节点的parameter)

最近在拿mindspore复现一个增量学习的分类任务,我这个用于分类的卷积网络会处理多个任务,后一个任务会对前一个任务模型的某几个卷积层进行拓宽(扩大输出通道数),其他层不变(继续使用前一个任务模型的权重等网络参数)
pytorch的修改模型方法就是:直接修改前一个任务指定卷积层的in/out_channels,同时修改.weight.data成新的形状。
mindspore里也可以修改前一个任务卷积层的in/out_channels,然后取原本卷积层parameter的权重进行张量变换,并用set_data来重设卷积层的parameter。而且打印model和model.get_parameters,都显示卷积层好像是被修改成功了(in_channels为新值,parameter形状也变了)。但是当我model(image)时,前向传播到我修改的卷积层的时候就报错了。
因此想请问下有没有比较适合实现对卷积网络进行修改的方法?(看官方文档的ops.assign是得保证参数形状不变,所以用不了;然后mindspore.rewrite感觉相对贴切?但是暂未尝试,因为不太清楚新节点能否继承好旧节点的parameter)