# 根据n_layer的设置(bert_base中是12)迭代定义几个encoder子层 for i in range(n_layer): self._encoder_sublayers.append( # 使用add_sublayer方法添加子层 self.add_sublayer( 'esl_%d' % i, EncoderSubLayer( hidden_act, n_head, d_key, d_value, d_model, d_inner_hid, prepostprocess_dro...
act=paddle.nn.ReLU() self.add_sublayer('act_%d'%i, act)#得到输入层到embedding层该神经元相连的五条线的权重#前向传播反馈defforward(self, feat_embeddings): y_dnn=paddle.reshape(feat_embeddings, [-1, self.num_field *self.sparse_feature_dim])forn_layerinself._mlp_layers: y_dnn=n_layer(...
foriinrange(groups): # add_sublayer方法:返回一个由所有子层组成的列表 conv2d = self.add_sublayer('bb_%d'% i, fluid.dygraph.Conv2D(num_channels=num_channels,# 通道数 num_filters=num_filters,# 卷积核个数 filter_size=filter_size,# 卷积核大小 stride=conv_stride,# 步长 padding=conv_paddi...
self).__init__()# 如果传入的是一个tupleiflen(layers)>0andisinstance(layers[0],tuple):forname,layerinlayers:# add_sublayer方法会将layer添加到self._sub_layers(一个tuple)self.add_sublayer(name,layer)else:foridx,layerinenumerate(layers):self.add_sublayer(str(idx),layer)defforward(self,X):...
通过add_sublayer()函数实现增加一个子层 完整代码 class Model(paddle.nn.Layer): def __init__(self): super(Model, self).__init__() self.flatten = paddle.nn.Flatten() def forward(self, inputs): y = self.flatten(inputs) return y ...
y = paddle.add(x=short, y=conv2) y = F.relu(y) return y class BasicBlock(nn.Layer): def __init__(self, num_channels, num_filters, stride, shortcut=True, name=None, data_format="NCHW"): super(BasicBlock, self).__init__() self.stride = stride self.conv0 = ConvBNLayer( ...
format(out_channels), Encoder(in_channels, out_channels)) self.encoders.append(block) in_channels = out_channels self.decoders = [] # 根据上采样个数和配置循环定义子Layer,避免重复写一样的程序 for out_channels in self.decoder_list: block = self.add_sublayer('decoder_{}'.format(out_...
element_wise_add(sub/mul/div/max等等) 这是对应元素操作系列,包含加减乘除 你可以使用这个api,也可以直接使用运算符+ - ,paddle已经重载了运算符 参数如下 - x 多维tensor - y 多维tensor - axis y维度对应x的索引,当我们需要对应元素操作时,这个不需要设置 - act 激活函数名称 ...
bottleneck_block = self.add_sublayer( 'bb_%d_%d' % (block, i), BottleneckBlock( num_channels=num_channels, num_filters=num_filters[block], stride=2 if i == 0 and block != 0 else 1, # c3、c4、c5将会在第一个残差块使用stride=2;其余所有残差块stride=1 ...
()), )ifis_last:block.add_sublayer(block_name+"_fc_2",paddle.nn.Linear(input_size,1,bias_attr=False) )else:block.add_sublayer(block_name+"_fc_2",paddle.nn.Linear(input_size,input_size,bias_attr=False) )returnblockclassNaive_fc_net(paddle.nn.Layer):def__init__(self,input_size...