程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在已经在 PyTorch 中实现的 keras 或 tensorflow 中转换 conv2D?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在已经在 PyTorch 中实现的 keras 或 tensorflow 中转换 conv2D??

开发过程中遇到如何在已经在 PyTorch 中实现的 keras 或 tensorflow 中转换 conv2D?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在已经在 PyTorch 中实现的 keras 或 tensorflow 中转换 conv2D?的解决方法建议,希望对你解决如何在已经在 PyTorch 中实现的 keras 或 tensorflow 中转换 conv2D?有所启发或帮助;

我在 pytorch 实现中有以下功能,用于用 3 个不同的层替换 conv2D 层:

first_layer = torch.nn.Conv2d(in_chAnnels=3,\
            out_chAnnels=3,kernel_size=1,StriDe=1,padding=0,dilation = (1,1),bias=falsE)

core_layer = torch.nn.Conv2d(in_chAnnels=3,\
            out_chAnnels=16,kernel_size=(3,3),StriDe=(1,padding=(1,dilation=(1,bias=falsE)

last_layer = torch.nn.Conv2d(in_chAnnels=16,\
                                 out_chAnnels=64],bias=TruE)

last_layer.bias.data = layer.bias.data

first_layer.weight.data = \
        torch.transpose(first,1,0).unsqueeze(-1).unsqueeze(-1)
last_layer.weight.data = last.unsqueeze(-1).unsqueeze(-1)
core_layer.weight.data = core

new_layers = [first_layer,core_layer,last_layer]
y = nn.Sequential(*new_layers)

其中,'first' 表示一个随机的 3 x 3 矩阵。 'core' 表示形状 [16,3,3] 的张量 'last' 表示另一个大小为 (64,16) 的随机矩阵。

当我尝试将其翻译成 keras 时,我有以下内容:

first_layer = tf.keras.layers.SeparableConv2D(3,StriDes = (1,padding = 'same',dilation_rate = (1,use_bias = false )

core_layer = tf.keras.layers.Conv2D(16,kernel_size=3,padding = (1,use_bias = falsE)

last_layer = tf.keras.layers.SeparableConv2D(64,\
                           padding = 'same',use_bias =True )

first_layer = tf.expand_dims(tf.expand_dims(tf.transpose(first,perm = [1,0]),0),0)
    
last_layer = tf.expand_dims(tf.expand_dims(last,0)
core_layer = core
new_layers = [first_layer,last_layer]

我试图在 keras 中取回模型的权重时,我得到了一个根本没有权重的列表。不执行卷积。关于如何进一步/任何其他方法将上述 pytorch 实现转换为 keras 或 tensorflow 的任何想法?

解决方法

您错过了 Keras 转换的最后一步。

TensorFlow(Keras) 中还有一Sequential() 类可用于实例化模型。

我没有检查 TF 和 PyTorch 之间是否完全匹配,但这应该是您解决问题的起点。

@H_168_5@model = tf.keras.Sequential([first_layer,core_layer,last_layer])
y = model(X)

大佬总结

以上是大佬教程为你收集整理的如何在已经在 PyTorch 中实现的 keras 或 tensorflow 中转换 conv2D?全部内容,希望文章能够帮你解决如何在已经在 PyTorch 中实现的 keras 或 tensorflow 中转换 conv2D?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。