Module pywander.neural_network.multilayer_perceptron

Classes

class SimpleMLP (*args, **kwargs)
Expand source code
class SimpleMLP(NeuralNetwork):
    """
    单隐藏层感知机
    """

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.model = nn.Sequential(
            nn.Linear(self.in_features, 200),
            nn.Sigmoid(),
            nn.Linear(200, self.out_features),
            nn.Sigmoid()
        )

        self.loss_function = nn.MSELoss()
        self.optimizer = torch.optim.SGD(self.parameters(), lr=0.01)

单隐藏层感知机

Initialize internal Module state, shared by both nn.Module and ScriptModule.

Ancestors

Inherited members

class SimpleMLP2 (*args, **kwargs)
Expand source code
class SimpleMLP2(NeuralNetwork):
    """
    对简单单隐藏层感知机进行一些改良
    BCELoss 更适合分类任务 只能处理0-1的数值 需要加一个Sigmoid层
    线性整流函数  ReLU
    带泄露线性整流函数 Leaky ReLU 比ReLU在负数上表现稍好
    LayerNorm 归一化层 在进入下一层神经网络进行归一化处理可以提升网络性能
    Adam优化器 会自适应调整学习率 增加动量来避免陷入局部最小值 表现一般比SGD好
    批次训练提升训练效率 多次训练
    """

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.model = nn.Sequential(
            nn.Linear(self.in_features, 200),
            nn.LeakyReLU(0.02),
            nn.LayerNorm(200),
            nn.Linear(200, self.out_features),
            nn.Sigmoid()
        )

        self.loss_function = nn.BCELoss()
        self.optimizer = torch.optim.Adam(self.parameters())

对简单单隐藏层感知机进行一些改良 BCELoss 更适合分类任务 只能处理0-1的数值 需要加一个Sigmoid层 线性整流函数 ReLU 带泄露线性整流函数 Leaky ReLU 比ReLU在负数上表现稍好 LayerNorm 归一化层 在进入下一层神经网络进行归一化处理可以提升网络性能 Adam优化器 会自适应调整学习率 增加动量来避免陷入局部最小值 表现一般比SGD好 批次训练提升训练效率 多次训练

Initialize internal Module state, shared by both nn.Module and ScriptModule.

Ancestors

Inherited members