- 博客(13)
- 收藏
- 关注
原创 最小二乘,交叉熵,极大似然,梯度下降,概率分布,凸优化,正则化
最小二乘,极大似然,交叉熵是三种损失函数,函数里面有很多未知参数,神经网络就是要最小化损失函数,也就是求满足损失函数最小的那些未知参数(比如极大似然估计就是已知观察数据,反去估计概率密度函数中的未知参数),在最小二乘,极大似然,交叉熵这些方法定义出损失函数时,由于未知参数太多,使得单纯利用求导令导数等于零然后去求极值点时间复杂度过高,所通常会用梯度下降法去代替求导令导数等于零的方法去慢慢逼近极值。当这些未知参数有条件限制时,可以转换成条件极值问题,即可以用拉格朗日求极值方法去求解,同样也可以用梯度下降去代替
2021-11-05 18:44:47
383
原创 卷积神经网络可视化
conv1_weights = list(model_saved.parameters())[0]conv1_images = make_grid(conv1_weights, normalize=True).cpu()plt.figure(figsize=(8, 8))plt.imshow(conv1_images.permute(1, 2, 0).numpy())输出:可视化了第一个卷积层的卷积核
2021-09-06 18:13:24
591
原创 图像数据处理
首先图像数据初始为RGB三个通道,每个通道的数值都是[0,255]的灰度值首先transforms.ToTensor()方法可将数据处理成[0,1]之间在用transforms.Normalize()方法可将数据处理成[-1,1]之间的标准化数据(之所以要处理成标准化数据是为了防止某些数据过大而其余数据都很小时这个过大的数据会对模型带来很大的影响,但其实每个数据都需要对模型产生影响,所以要先标准化)在使用imagenet数据集时会看到transforms.Normalize([0.485, 0.
2021-09-02 17:46:39
802
原创 os.walk()方法读取图像集标签与路径到列表
import osdata_path = []data_name = []for root, dirs, files in os.walk('train'): # 变量指定目录文件列表 for image_file in files: image_path = os.path.join(root, image_file) data_path.append(image_path) data_name.append(image_file.
2021-09-02 16:52:40
367
原创 LabelEncoder()对特征进行硬编码
sklearn.preprocessing.LabelEncoder对标签进行标准化,将字符串标签转换成从 0 开始的数字类标签。另外,该方法还可以反转标签,即将数字处理成字符串。当然,你也可以自己写一个判断语句来将字符串标签数值化。该方法对特征进行硬编码不仅可以使用pandas的 factorize函数将文本特征进行编号,也可以使用sklearn 的LabelEncoder函数,两者的效果几乎是一样的。编码为0~n-1(n为种类数)data_name中为:dog,dog,cat,dog等列表...
2021-09-02 16:42:46
1145
原创 KFold():K折交叉验证
原理:模型在验证数据中的评估常用的是交叉验证,又称循环验证。它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。KFold(n_splits=’warn’, shuffle=False, random_sta
2021-08-29 19:36:56
1549
原创 tensorflow建立卷积神经网络需要理解的两个函数:tf.nn.conv2d(),tf.nn.avg_pool()
tf.nn.avg_pool( value, ksize, strides, padding, data_format='NHWC', name=None)
2021-08-29 17:54:46
345
原创 pytorch nn.Linear(x)中x的数据维度
当x为:torch.manual_seed(10) # 随机数种子x = torch.linspace(1, 10, 50) # 生成等间距张量y = 2 * x + 3 * torch.rand(50)print(x)输出:tensor([ 1.0000, 1.1837, 1.3673, 1.5510, 1.7347, 1.9184, 2.1020, 2.2857, 2.4694, 2.6531, 2.8367, 3.0204, 3.204
2021-08-28 11:48:15
786
原创 (predicted == labels).sum().item()
import torchimport numpy as np data1 = np.array([ [1,2,3], [2,3,4]])data1_torch = torch.from_numpy(data1)data2 = np.array([ [1,2,3], [2,3,4]])data2_torch = torch.from_numpy(data2)p = (data1_torch == data2_torch) #对比后相同的值会为1,不同则会.
2021-08-27 11:24:00
3639
2
原创 feature_column
首先大家一定 要记得 神经网络 能够处理什么数据类型,答案是 数字类型,所以 无论您的 原始数据集 是什么格式,最终 都必须 要转换成 数字类型 才能送入 最终的model.tf官网提供了 feature_column包,就是 为了 将 其它 类型 转换为 数字类型的feature_column是原始数据和estimator模型之间的桥梁,如下图所示:feature_column使用方法见:tensorflow-summary/feature_column.ipynb at a31243457.
2021-08-25 16:27:53
413
原创 tf.data.Dataset.from_tensor_slices()
tf.data.Dataset.from_tensor_slices函数创建一个代表数组切片的tf.data.Dataset。系统会在第一个维度内对该数组进行切片,例: import tensorflow as tf import numpy as np features, labels = (np.random.sample((6,3)),np.random.sample((6,1))) print((features, labels)) data..
2021-08-25 12:39:47
1189
原创 一些经典的学习率
首先要了解Momentum概念:借用了物理中的动量概念,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力。BGD(BatchGradientDescent):会陷入minibatch-loss的奇点SGD(随机梯度下降):不会陷入minibatch-loss的奇点,但走的路径比较曲折(震荡),尤其是batch比较小的情况下。SG..
2021-08-25 12:06:39
150
1
原创 为什么要用sigmoid函数和softmax函数解决分类问题
所谓神经网络解决文类问题可以等价为同时满足两个条件:1:神经网络的概率模型与理想概率模型的各阶矩相等(两个概率模型是否相等)2:P(y|x)的熵最大(自己理解:就是不考虑任何无信息量的因素最公平的分配概率时如何分配)关于第1点:首先可以证明任何一个概率分布可以用正态分布里的期望和期望里x的几次幂(也就是所谓的一阶矩二阶矩等等来表示),这样就可以通过比较矩来比较两个概率模型是否相等。可以在x,y上先设计随机变量(x,y)满足某一事实时X=1否则为0(满足的某一事实需要考虑样本空间中所有可
2021-08-25 11:51:44
633
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人