pytorch转keras

pytorch与keras的区别

 

模型输入:

区别 pytorch keras
API torch.tensor

Input

形状 NCHW

NHWC

#pytorch
            #批次, 通道, 高, 宽
a = torch.randn(1,4,160,160)


#keras
#形状和批次分开    
a = Input(shape = (160, 160, 4), batch_size = 1)

 

卷积:

区别 pytorch keras
API nn.Conv2D

Conv2D

输入通道 参数有输入通道 没有输入通道
padding 任意输入一个值 'valid'没填充,'same'有填充
#pytorch
self.conv = Conv2d(in_channels, out_channels, kernel_size, stride, padding=padding, bias=bias)

#keras
output = Conv2D(input.shape[-1] // reduction, kernel = (1,1), padding = "valid", use_bias = False)(output)

 

反卷积:

区别 pytorch keras
API

nn.ConvTranspose2d

Conv2DTranspose

输入通道 参数有输入通道 没有输入通道
#pytorch
self.dconv = nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride, bias=bias)

#keras
output = Conv2DTranspose(out_channels, kernel_size, stride, use_bias=bias)(input)

 

上采样:

区别 pytorch keras
API

nn.UpsamplingBilinear2d

需要自定义

#pytorch
                                #缩放因子
self.up = nn.UpsamplingBilinear2d(scale_factor=2)

#keras
import tensorflow.compat.v1 as tf
#需要tf1版本里的resize
def my_upsampling(x,img_w,img_h,method=0):
    """0:双线性差值。1:最近邻居法。2:双三次插值法。3:面积插值法"""
    return tf.image.resize_images(x,(img_w,img_h),0)
                                       #输出宽高
output = Lambda(my_upsampling,arguments={'img_w':input.shape[2] * 2,'img_h':input.shape[1] * 2})(input)

 

池化:

区别 pytorch keras
 

nn.AdaptiveAvgPool2d(1)

没有自适应池化,需要利用自定义池化自定义

 

 

 

 

BatchNormalization:

区别 pytorch keras
API

nn.BatchNorm2d

BatchNormalization

输入 有输入通道 没有输入通道
#pytorch
nn.BatchNorm2d(in_size),

#keras
output = BatchNormalization()(output)

 

激活:

区别 pytorch keras
API

nn.ReLU

Activation

  不同激活函数不同api 不同激活通过输入字符串来表示
#pytorch
self.act = nn.Sigmoid()
self.act = nn.ReLU


#keras
output = Activation("sigmoid")(output)
output = Activation("relu")(output)

 

不定期更新。。。

 

 

 

你可能感兴趣的:(深度学习,人工智能,tensorflow,pytorch,深度学习,神经网络)