![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
玩转pytorch和tensorflow
文章平均质量分 84
想同时玩转pytorch和tensorflow,请移步这里
geastwind1
这个作者很懒,什么都没留下…
展开
-
玩转pytorch和tensorflow之(1)——batchnorm
pytorch的BatchNorm2d需要把归一化的维度放到C所在的维度,对应维度索引[0,1,2,3]中的1,所以做了一个转置,输入的形状变为BWCH,把需要归一化的维度调到1。输入的形状为[1,2,3,4],BatchNormalization中的epislon参数对应BatchNorm2d 的eps参数,这里取1e-5。输入的形状为[1,2,3,4],BatchNormalization中的epislon参数对应BatchNorm2d 的eps参数,这里取1e-5。原创 2024-08-03 21:49:52 · 262 阅读 · 0 评论 -
玩转pytorch和tensorflow之(2)——conv2d
tensorflow的'valid'表示不padding,对应pytorch是(0,0),'same'表示输出形状和输入保持一致,pytorch需要根据输出输入的维度变化公式计算padding的数值。例如对于(2,3)的卷积核,输入4通道输出8通道,则weight权重的形状是(2,3,4,8)而同样的配置下,pytorch的weight权重的形状是(8,4,2,3)transpose(0,3,1,2),输出再转置回来,保持和tensorflow是一样的。permute(2,3,1,0),bias是一样的。原创 2024-08-08 08:11:43 · 238 阅读 · 0 评论 -
玩转pytorch和tensorflow之(3)——layernorm
与 BatchNormalization不同的是,LayerNormalization 是在指定的特征维度上进行归一化的,而BatchNormalization是在数据批次维度上进行归一化的。torch的LayerNorm转tensorflow的LayerNormalization,过程和上面类似,torch中的weight参数和bias参数需要做reshape才能给到tensorflow。注意有一个reshape。模型的输入维度定义:[1,2,3,4],最后两维是[3,4],将会对这两个维度归一化。原创 2024-08-07 21:56:58 · 187 阅读 · 0 评论 -
玩转pytorch和tensorflow之(4)——GRU
而pytorch的GRU则有weight_ih_l0,weight_hh_l0,bias_ih_l0,bias_hh_l0这4组参数。你需要把kernel,recurrent_kernel,bias转换到weight_ih_l0,weight_hh_l0,bias_ih_l0,bias_hh_l0上去。OK,你已经有了一个GRU模块,tensorflow下训练的,现在你想用训练好的GRU模型的参数在pytorch环境中来做推理。3)由bias_ih_l0,bias_hh_l0得到bias。原创 2024-08-08 07:06:41 · 279 阅读 · 0 评论 -
玩转pytorch和tensorflow之(5)——全连接层
全连接层在tensorflow中是叫Dense层,在pytorch中叫线性层(Linear),全连接层可以将输入特征与每个神经元之间的连接权重进行线性运算:矩阵乘法和偏置加法操作,得到最终输出结果,它确确实实是一个线性单元。Dense(units=8)的weight形状是(4,8),bias形状是(8,)注意Dense不需要定义输入的通道,它自己会根据输入的形状定义获取输入的通道。假定输入的通道数目是4,输出的通道数目是8,输入的形状是(1,5,6,4)。好了,全连接层的转换已经完成,你自己去试试看吧。原创 2024-08-08 08:36:24 · 237 阅读 · 0 评论