写在前面的一些内容
本次习题来源于 神经网络与深度学习 pdf电子书的第117页和第118页(对应纸质版第102页和第103页)的习题4-2、4-3、4-7、4-8和4-9,具体内容详见 NNDL 作业4 。
本实验报告参考了HBU-NNDL 作业4 作者:不是蒋承翰的部分内容。
水平有限,难免有误,如有错漏之处敬请指正。
习题4-2
试设计一个前馈神经网络来解决 XOR 问题,要求该前馈神经网络具有两个隐藏神经元和一个输出神经元,并使用 ReLU 作为激活函数。
事实证明没法用ReLU作为激活函数,因为(习题4-3),同时,用Leaky ReLU训练也会出现问题(包括但不仅限于-0问题),所以这里使用ELU作为激活函数进行训练。
注:上述问题可以参考 Julia:用多层感知机解决异或问题 作者:强劲九 解决,此处还是继续使用ELU。
代码如下:
import torch
input_x = torch.tensor([[0, 0], [0, 1], [1, 0], [1, 1]]).to(torch.float32)
real_y = torch.tensor([[0], [1], [1], [0]]).to(torch.float32)
from torch.nn.init import constant_, normal_
import numpy as np
class XOR_module(torch.nn.Module):
def __init__(self, input_size=2, output_size=1