TSN测试时,报错“Segmentation fault (core dumped)”,升级版本,还是报同样错误。
svmlkihl1#
TSN测试是什么样的
js4nwp542#
是TSN网络的模型,具体代码如下:
import paddle.fluid as fluid import numpy as np from paddle.fluid.layer_helper import LayerHelper from paddle.fluid.dygraph.nn import Conv2D, Pool2D, BatchNorm, Linear class ConvBNLayer(fluid.dygraph.Layer): def __init__(self, name_scope, num_channels, num_filters, filter_size, stride=1, groups=1, act=None): super(ConvBNLayer, self).__init__(name_scope) self._conv = Conv2D( num_channels=num_channels, num_filters=num_filters, filter_size=filter_size, stride=stride, padding=(filter_size - 1) // 2, groups=groups, act=None, bias_attr=False) self._batch_norm = BatchNorm(num_filters, act=None) def forward(self, inputs): y = self._conv(inputs) y = self._batch_norm(y) return y class BottleneckBlock(fluid.dygraph.Layer): def __init__(self, name_scope, num_channels, num_filters, stride, shortcut=True): super(BottleneckBlock, self).__init__(name_scope) self.conv0 = ConvBNLayer( self.full_name(), num_channels=num_channels, num_filters=num_filters, filter_size=1, act='relu') self.conv1 = ConvBNLayer( self.full_name(), num_channels=num_filters, num_filters=num_filters, filter_size=3, stride=stride, act='relu') self.conv2 = ConvBNLayer( self.full_name(), num_channels=num_filters, num_filters=num_filters * 4, filter_size=1, act=None) if not shortcut: self.short = ConvBNLayer( self.full_name(), num_channels=num_channels, num_filters=num_filters * 4, filter_size=1, stride=stride) self.shortcut = shortcut self._num_channels_out = num_filters * 4 def forward(self, inputs): y = self.conv0(inputs) conv1 = self.conv1(y) conv2 = self.conv2(conv1) if self.shortcut: short = inputs else: short = self.short(inputs) y = fluid.layers.elementwise_add(x=short, y=conv2) layer_helper = LayerHelper(self.full_name(), act='relu') return layer_helper.append_activation(y) class TSNResNet(fluid.dygraph.Layer): #定义网络结构,代码补齐 def __init__(self, name_scope, layers=50, class_dim=102, seg_num=10, weight_devay=None): super(TSNResNet, self).__init__(name_scope) self.laters = layers self.seg_num = seg_num supported_layers = [50, 101, 152] assert layers in supported_layers, \ "supported layers are {} but input layer is {}".format(supported_layers, layers) if layers == 50: depth = [3, 4, 6, 3] elif layers == 101: depth = [3, 4, 23, 3] elif layers == 152: depth = [3, 8, 36, 3] num_filters = [64, 128, 256, 512] self.conv = ConvBNLayer( self.full_name(), num_channels =3, num_filters =64, filter_size =7, stride =2, act='relu') self.pool2d_max = Pool2D( pool_size =3, pool_stride =2, pool_padding =1, pool_type ='max') self.bottleneck_block_list = [] num_channels = 64 for block in range(len(depth)): shortcut = False for i in range(depth[block]): bottleneck_block = self.add_sublayer( 'bb_%d_%d' % (block, i), BottleneckBlock( self.full_name(), num_channels=num_channels, num_filters=num_filters[block], stride=2 if i==0 and block != 0 else 1, shortcut= shortcut)) num_channels = bottleneck_block._num_channels_out self.bottleneck_block_list.append(bottleneck_block) shortcut = True self.pool2d_avg = Pool2D(pool_size=7, pool_type='avg', global_pooling=True) import math stdv = 1.0 / math.sqrt(2048 * 1.0) self.out = Linear(input_dim=num_channels, output_dim=class_dim, act='softmax', param_attr=fluid.param_attr.ParamAttr( initializer=fluid.initializer.Uniform(-stdv, stdv))) def forward(self, inputs, label=None): out = fluid.layers.reshape(inputs, [-1, inputs.shape[2], inputs.shape[3], inputs.shape[4]]) y = self.conv(out) y = self.pool2d_max(y) for bottleneck_block in self.bottleneck_block_list: y = bottleneck_block(y) y = self.pool2d_avg(y) out = fluid.layers.reshape(x=y, shape=[-1, self.seg_num, y.shape[1]]) out = fluid.layers.reduce_mean(out, dim=1) y = self.out(out) if label is None: acc = fluid.layers.accuracy(input=y, label=label) return y, acc else: return y if __name__ == '__main__': with fluid.dygraph.guard(): network = TSNResNet('resnet', 50) img = np.zeros([1, 10, 3, 224, 224]).astype('float32') img = fluid.dygraph.to_variable(img) outs = network(img).numpy() print(outs)
2条答案
按热度按时间svmlkihl1#
TSN测试是什么样的
js4nwp542#
是TSN网络的模型,具体代码如下: