大佬教程收集整理的这篇文章主要介绍了如何在已经在 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,请注明来意。