Task01:线性回归;Softmax与分类模型、多层感知机
线性回归
2.
#测试 输出:
y_hat = net(X,w,b)
print(y_hat.shape,y.view(-1).shape, y.view(y_hat.shape).shape, y.view(-1, 1).shape,
y_hat.view(-1).shape,y.shape,)
#结束
torch.Size([10, 1]) torch.Size([10]) torch.Size([10, 1]) torch.Size([10, 1]) torch.Size([10]) torch.Size([10])
说明:y_hat的形状是[n, 1],而y的形状是[n],两者相减得到的结果的形状是[n, n],相当于用y_hat的每一个元素分别减去y的所有元素
3.
def squared_loss(y_hat, y):
return (y_hat - y.view(y_hat.size())) ** 2 / 2
y_hat = torch.tensor([2.33,1.07,1.23])
y = torch.tensor([3.14,0.98,1.32])
loss(y_hat, y).mean()
tensor(0.1121)
softmax
softmax([100, 101, 102])的结果等于以下的哪一项
softmax([10.0, 10.1, 10.2]) softmax([-100, -101, -102]) softmax([-2,-1, 0]) 答案 softmax([1000, 1010, 1020])
错的原因:除了B 我觉得都行 ??
实际上这是一个数学问题,从讨论区复制过来的:
感知机
对于只含有一个隐藏层的多层感知机,输入256×256的图片,隐藏单元个数是1000,输出类别个数是10,则模型的所有权重矩阵W_{i} 的元素数量之和是 ??
65546000
分析:数量和 ??不是W值的和。
256256 = 65536
655361000 = 65536000
65536000+1000*10=65546000
我原来以为:
输入-隐藏 1000个w
隐藏-输出 10000个
共计 11000个 这是错误的 因为:
分类问题
一个简单的图像分类问题,输入图像的高和宽均为2像素,色彩为灰度。
图像中的4像素分别记为x1,x2,x3,x4。
一张照片由256*256 个神经元表示。输入层神经元数:256*256 ,隐藏层神经元数:1000,输出层神经元数:10。
假设真实标签为狗、猫或者鸡,这些标签对应的离散值为y1,y2,y3。 我们通常使用离散的数值来表示类别,例如y1=1,y2=2,y3=3。
Task02:文本预处理;语言模型;循环神经网络基础
文本预处理
- strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
str.strip([chars]);
chars – 移除字符串头尾指定的字符序列。
2.Python 的re模块提供了re.sub用于替换字符串中的匹配项
re.sub(pattern, repl, string, count=0, flags=0)
3.Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值。
dict.get(key, default=None)
循环神经网络基础
困惑度是对交叉熵损失函数做指数运算后得到的值。特别地
最佳情况下,模型总是把标签类别的概率预测为1,此时困惑度为1;
最坏情况下,模型总是把标签类别的概率预测为0,此时困惑度为正无穷;
基线情况下,模型总是预测所有类别的概率都相同,此时困惑度为类别个数。
显然,任何一个有效模型的困惑度必须小于类别个数。