PaddleClas/ppcls/arch/gears/fc.py

49 lines
1.5 KiB
Python
Raw Normal View History

2021-05-31 14:15:37 +08:00
# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import paddle
import paddle.nn as nn
2022-08-17 22:34:06 +08:00
from ..utils import get_param_attr_dict
2022-04-21 00:17:54 +08:00
2021-06-03 15:19:39 +08:00
2021-05-31 14:15:37 +08:00
class FC(nn.Layer):
2022-04-21 00:17:54 +08:00
def __init__(self, embedding_size, class_num, **kwargs):
2021-05-31 14:15:37 +08:00
super(FC, self).__init__()
2021-06-03 15:19:39 +08:00
self.embedding_size = embedding_size
2021-05-31 14:15:37 +08:00
self.class_num = class_num
2022-04-21 00:17:54 +08:00
2021-06-03 15:19:39 +08:00
weight_attr = paddle.ParamAttr(
initializer=paddle.nn.initializer.XavierNormal())
2022-04-21 00:17:54 +08:00
if 'weight_attr' in kwargs:
2022-04-21 14:37:00 +08:00
weight_attr = get_param_attr_dict(kwargs['weight_attr'])
2022-04-21 00:17:54 +08:00
bias_attr = None
if 'bias_attr' in kwargs:
2022-04-21 14:37:00 +08:00
bias_attr = get_param_attr_dict(kwargs['bias_attr'])
2022-04-21 00:17:54 +08:00
self.fc = nn.Linear(
self.embedding_size,
self.class_num,
weight_attr=weight_attr,
bias_attr=bias_attr)
2021-05-31 14:15:37 +08:00
2021-06-07 19:48:18 +08:00
def forward(self, input, label=None):
2021-05-31 14:15:37 +08:00
out = self.fc(input)
return out