
深度学习
文章平均质量分 84
星海千寻
学习使我快乐,每天进步一点点,夯实基础,足够努力,未来定可期。缓慢而坚持地学习,
花一年的时间蜕变,他日剑指长虹。
展开
-
Auto Encoder再学习
一:AutoEncoder基本概念将输入的比较高维度信息,不管是语音,文字,图像经过encoder转成一个中间状态的向量(也叫做latent code),这是一个低维度的数据,再通过decoder 还原重建成原来的信息的过程。中间这个向量啊,就是某一种形式的embeeding表示,它最基本的用法就是可以用做其他下游任务的输入。为什么这种方式是可以的呢?我们虽然输入的图像的表象很多,但是其样式种类可能不是很多哈,比如颜色和纹理等特征,而且维度之间很多冗余和相关的信息,因此很有可能只使用少量的维度数据原创 2021-09-12 16:10:54 · 739 阅读 · 1 评论 -
《目标检测》YOLO、SSD简单学习
上一篇文章写了物体检测的二步走算法的介绍。这里我们看看端到端网络的模型。R-CNN系列的算法,准确度高,但是处理速度慢。端到端系列的算法,准确的稍微低,但是处理速度却极大提升。一:YOLO算法这里不展开细讲,之前学习过的,可参考https://blog.youkuaiyun.com/qq_29367075/article/details/109269477https://blog.youkuaiyun.com/v_JULY_v/article/details/80170182https://zhuanlan.zhi原创 2021-08-22 13:35:12 · 639 阅读 · 0 评论 -
《目标检测》R-CNN、SPP-NET、Fast R-CNN、Faster R-CNN
学习内容来自:https://www.bilibili.com/video/BV1m5411A7FD?p=2类似的博文:https://blog.youkuaiyun.com/v_JULY_v/article/details/80170182一:目标检测的含义对输入的一张图片,不仅仅需要得到图片中的物体类别,还需要得到图片中物体的位置信息,再细节分的话,还有单物体检测和多物体检测。这个任务本质上就是这两个问题:一:图像识别,二:定位。图像识别(classification):输入:图片输出:物体的类别原创 2021-08-21 18:41:40 · 828 阅读 · 0 评论 -
《神经风格迁移》论文走读
上一次自己列出了几个关于神经风格迁移的论文链接后,自己也尝试去读懂这些,于是挑选了几个论文来拜读,本文挑选了四篇论文,前两篇是单模型多风格的(Multiple-Style-Per-Model Fast Neural Method),而后两篇是单模型任意风格的(Arbitrary-Style-Per-Model Fast Neural Method)。====================一:《Multi-style Generative Network for Real-time Transfer》原创 2021-08-20 00:08:53 · 747 阅读 · 2 评论 -
《图像超分》一些论文走读(SRCNN ,ESPCN ,VDSR ,SRGAN)
有时候发现读论文还是挺有意思的一件事,而且多读几回就会越来越熟练。作为小本科也是充满了信心。更可喜的是,在AI领域,能看到很多中国名字的学者以及中国的贡献。SRCNN (Learning a Deep Convolutional Network for Image Super-Resolution, ECCV2014)正所谓开山之作,现在看来这个架构是很简单的,因为只用到了三层卷积层,不过在那个时候深度神经网络刚刚兴起的时候能有这样的设计也是很不错了。此算法的步骤如下:1:先采用Bicubic原创 2021-08-12 19:30:29 · 1849 阅读 · 0 评论 -
《深度学习》图像超分初识
一:简介图像超分(super-Resolution)是将低分辨率的图像或者视频序列恢复出高分辨率图像。可以用在视频数字高清播放,视频监控,视频编码,图像还原和医学影像等领域,按照类别可分为单个图像的超分(single image super resolution, SISR)和视频超分(multiframe super resolution)。二:数学概述退化函数很难得到,于是我们就找到一个函数F,能够将低分辨率的图像转换成搞分辨率。以前常见的方法是:最近邻插值法、双线性插值法、双立方插值法。这原创 2021-08-11 16:40:31 · 6170 阅读 · 0 评论 -
《深度学习》学习的TIP
训练过程如果训练不起来:一:区分问题种类1: 先看训练集的training loss,如果training loss很大,还要看是high bias还是high variance?2:如果在训练集的loss很小,那么再看测试集的loss,如果测试集合的也很小,就万事大吉,如果在测试集的loss很大,说明很可能发生了过拟合。3:High bias: (当你使用任何一个x,期望值是f(x),尝试了很多很多参数搭配都不能降低loss,说明期望点在这些参数的表示域外),说明程序模型的复杂度不够,太简单了,原创 2021-08-01 16:32:49 · 568 阅读 · 0 评论 -
图像语义分割 -- UNET++
之前我们学习了U-Net的结构,以及模拟实现了一个模型。现在我们继续回顾一下,U-Net的最大特征就是,在encoder-decoder的基础上进行了skip-connection的操作(浅层和深层特征的融合),我们之前实现的是一个四层的网络,作者的论文也用的是四层的。难道必须是要四层么?于是有人就实验了不同的深度层次在不同的数据集上。请注意,每个圆圈圈都是表示一组卷积运算。实验证明,并不是越深越好,也不是 4 层最好;实验折射出这样的结论:不同层次(深浅)的特征的重要性 在不同数据集上 表现不原创 2021-01-24 22:15:04 · 1146 阅读 · 1 评论 -
图像语义分割 -- U-Net
一:FCN回顾上一博文我们学习了FCN,有不同的特征融合版本。至于为什么要进行特征能融合呢?由于池化操作的存在,浅层卷积视野小,具体一些,细节更加详细,越深层的视野大,图像越小,越粗粒度,细节也是越来越模糊,所以,下采样的好处是,带来了感受域的提升,同时也减少计算量,但是却忽略了很多细节,让图像变得平湖模糊,因此,作者将浅层的细节特征也进行了特征融合。较浅的卷积层(靠前的)的感受域比较小,学习感知细节部分的能力强,较深的隐藏层 (靠后的),感受域相对较大,适合学习较为整体的、相对更宏观一些的特征。所原创 2021-01-20 23:47:29 · 1116 阅读 · 0 评论 -
图像语义分割 -- FCN
一:图像语义分割最简答理解图像语义分割呢就是看下面的图片例子:像素级别的分类:假如像素有五个类别,那么最后输出的结果在长度和宽度上是一样的,只不过通道数就是类别个数了。拆解开各个通道就是如下所示:合并后就是各个像素的类别信息了,一般情况下会不同的颜色来表示各个类别,这样我们就能更加清晰看出来哪些像素是什么类别了,这也是一个监督学习的例子。二:FCN由于自己太懒了,关于FCN的概念和介绍请自己自行百度哈。推荐下面链接https://zhuanlan.zhihu.com/p/31428783原创 2021-01-20 03:44:54 · 1578 阅读 · 1 评论 -
搭建Vgg16训练CIFAR10数据集
今天我们来学习下经典网络VGG,并且模拟实现VGG16,且用来训练cifar10数据集。一:VGG简单学习先来看下图的总体介绍,有下面几种分类,A,A-LRN,B,C,D,E。其中最常用的是后两种,D和E的网络配置一般也叫做VGG16和VGG19。VGG16有13个卷积层加上3个全连接层,VGG19则有16个卷积层加上3个全连接层。VGG16和VGG19度包含了5个池化层。整体网络可以分成6个部分,前面5个是卷积层(Conv-XXX表示)(若干卷积ReLU和一个maxpooling组成),也就是用原创 2021-01-18 03:24:16 · 13928 阅读 · 16 评论 -
《信息熵,联合熵,条件熵,交叉熵,相对熵》
一:自信息二:信息熵三:联合熵四:条件熵五:交叉熵六:相对熵(KL散度)七:总结原创 2020-12-16 02:02:13 · 222 阅读 · 0 评论 -
深度学习《Photo Editing》
一:问题提出在GAN中的生成器Generator,输入的是一个低维的向量Z,输出则是一个图片,而且呢,在Z空间内上每一维度的值,或者几个维度的值都可能表示一张图片的某个特征,改变Z的值就可以调整图像的内容。如果此时我们已经训练得到一个Generator。问题1. 对于一张已有的生成图像X,如何反推回去得到它对应的向量 ?问题2. 又如何知道 中的每个维度对应着图像中哪个特征呢?问题3. 该维度是以怎样的具体的数值控制着该特征的表现呢?二:问题解决解答问题1:假设我们现在已经有了一个Genera原创 2020-12-10 01:15:54 · 786 阅读 · 0 评论 -
深度学习《BiGAN》
BiGAN的算法思想:这里把将编码器和解码器分开,不再一起训练,但是额外加一个判别器,将编码器和解码器的输入和输出(Z和X)同时作为判别器的输入,然后让判别器区分输入数据是来自编码器还是解码器,但是encoder和decoder会尽量不让D做出正确的判别,如果有朝一日,判别器D无法分别输入的数据到底是来自哪个,就说明编码器的输入图片和解码器生成的图片很接近,编码器输出的z和解码器输入的z很接近,就成功了呢。简单的原理就是将编码器看成一个P(x,z)分布,将解码器看成Q(x,z)分布,通过判别器,让他们的.原创 2020-12-08 22:48:58 · 4680 阅读 · 0 评论 -
深度学习《再探AE和VAE的区别》
最近学习了VAEGAN,突然对VAE和AE的概念和理解上变得模糊了,于是赶紧搜索资料,重新理解一番。一:AE输入的图片数据X经过encoder后会得到一个比较确切的latent code Z,这个Z通过decoder重建出图像X’,我们的损失函数就是X和X’的重建损失值。AE特点就是:自动编码器是数据相关的(data-specific 或 data-dependent),这意味着自动编码器只能压缩那些与训练数据类似的数据,反过也是一类数据对应一种编码器,无法拓展一种编码器去应用于另一类数据。自动原创 2020-12-08 19:18:19 · 6255 阅读 · 0 评论 -
深度学习《EBGAN》
本文学习自李宏毅老师的深度学习视频。EBGAN如下图所示:它仅仅只改变了判别器D的结构,它将D改成一个AE的结构,也就是说,现在给D一个数据让他判断是不是真实的数据,它的做法就是去把数据重构一把,看看能不能重构回来,也就是看看重构的损失/误差大不大,根据这个损失值去打个分数,如果重构损失越小,说明原来的图片的效果越好,相反如果重构损失越大,说明原来的图片的效果越差。传统的D网络是一个二元分类器,训练的时候需要正负样本,不能单独训练,需要G网络产生负样本。但是现在D网络变成了一个损失值的计算,不属于分原创 2020-12-08 02:24:48 · 1029 阅读 · 0 评论 -
深度学习《VAE-GAN》
VAE-GAN如下图所示,也就是VAE+GAN的组合。我们知道VAE是由一个编码器一个解码器组成,编码器可以将数据映射到一个低维的空间分布code c,而解码器可以将这个分布还原回原始数据,因此decoder是很像GAN中的generateor,如果再后面拼接上一个判别器D,这样的话,前两个模块就是VAE,后俩模块就是GAN。训练的时候,decoder输出的x’要和原始的x尽可能接近(L1或L2距离),x’和真实数据x经过D需要判别出是是否是真实的图片,训练结束后,我们就能直接取出GAN的部分做生成使原创 2020-12-08 02:01:25 · 19599 阅读 · 5 评论 -
深度学习《stackGAN》
今天我们来学习下stackGAN的结构设计原创 2020-12-07 01:09:13 · 603 阅读 · 0 评论 -
深度学习《CGAN新认识》
本文是学习自李宏毅深度学习教程的内容,之前学习过CGAN,本文想做一些补充的内容,也算是完善下认识。也是因为自己有强迫症。1:网络结构稍加改变之前认识的CGAN的结构如下:最后在D网络输入的地方,只输出一个标量,这个标量既要代表是否是真实的图片,还要代表C和Z是否是匹配的,这样做的话呢,如果给一个样本输入,最后给了个低分,我们就无法区分出到底是哪个原因导致的。因此对D网络稍稍做了点改变就是为了使我们能区分出是哪个原因导致的,也就是输出两个标量,一个代表是真实的?另一个代表数据X和条件C是不是匹配原创 2020-12-06 17:55:04 · 216 阅读 · 0 评论 -
深度学习《patchGAN》
这一篇比较简单,于是也就简单学习下。在以往的GAN学习中,判别器D网络的输出是一个标量,介于0~1之间,代表是真实图片的概率。而patchGAN则是输出是NxN的矩阵X,每一个元素x[i][j]表示一个patch,对应于图像的一个感受野,最后取各个patch部位的均值来表示最后总的来看是真实图片的概率。直观上理解就可以了,普通GAN输出一个数,像是一言堂,PatchGAN输出一个矩阵,最终结果求平均,考虑到图像的不同部分的影响,就像考虑了多人的建议然后给出决定。实际上,一些研究表明对于要求高分辨率、原创 2020-12-05 05:30:38 · 8210 阅读 · 4 评论 -
深度学习《StarGAN》
原创 2020-12-05 02:30:39 · 361 阅读 · 0 评论 -
深度学习《CycleGAN》
1:从domain X到domain Y。2:从domain Y到domain X。3:论文中的效果展示上图展示的就是从不同风格域的图像之间相互转换的效果。原创 2020-12-04 02:05:34 · 355 阅读 · 0 评论 -
深度学习《Transfer Learning》
本文依旧不打算自己写,迁移学习也是一个方法论,这里强烈推荐下面这个手册。http://jd92.wang/assets/files/transfer_learning_tutorial_wjd.pdf可以学习此手册,目前正在学习中原创 2020-11-23 21:44:55 · 248 阅读 · 0 评论 -
深度学习《Life-Long Learning》
本文不打算自己写了,学习自李宏毅的课程,附带链接如下:https://zhuanlan.zhihu.com/p/161379773https://blog.youkuaiyun.com/qq_35564813/article/details/92430068再次做个记录,方便后续回忆,避免遗忘。原创 2020-11-23 20:47:48 · 414 阅读 · 0 评论 -
深度学习《各种归一化的区别》
一:各种归一化Batch Normalization,其论文:https://arxiv.org/pdf/1502.03167.pdfLayer Normalizaiton,其论文:https://arxiv.org/pdf/1607.06450v1.pdfInstance Normalization,其论文:https://arxiv.org/pdf/1607.08022.pdfGroup Normalization,其论文:https://arxiv.org/pdf/1803.08494.pd原创 2020-11-23 20:34:40 · 1291 阅读 · 0 评论 -
深度学习《残差网络简单学习》
一:残差网络VGG网络将网络达到了19层的深度,GoogleNet的深度是22层,一般而言,深度越深,月面临如下问题:1:计算量增大2:过拟合3:梯度消失和梯度爆炸4:网络退化第一个问题呢可以用GPU集群并行计算来解决。第二个问题和第三个问题,可以用(Early stop,Data expading,正则化,dropout,BatchNorm,Gradient clapping)等多重方式解决。而问题四就得需要残差网络的思路来解决:一般而言,网络的深度越深,理想情况下是期望越能获得更高维度原创 2020-10-28 03:33:00 · 529 阅读 · 0 评论 -
深度学习《InfoGAN模型》
一:网络介绍普通的GAN网络的特点是无约束,对网络输入的噪声也不好解释,CGAN中我们通过给噪声合并一些类别数据,改变了输出形式,可以训练出我们指定类别的数据,这一点也是某种程度的解释,但是解释性不强。InfoGAN 主要特点是对GAN进行了一些改动,成功地让网络学到了可解释的特征,网络训练完成之后,我们可以通过设定输入生成器的隐含编码来控制生成数据的特征。InfoGAN将输入生成器的随机噪声分成了两部分:一部分是随机噪声Z, 另一部分是由若干隐变量拼接而成的latent code c。其中,c会有先原创 2020-10-22 23:30:56 · 2252 阅读 · 0 评论 -
深度学习《CGAN模型》
一:介绍CGAN全程是Conditional Generative Adversarial Network,回想一下,传统的GAN或者其他的GAN都是通过一堆的训练数据,最后训练出了G网络,随机输入噪声最后产生的数据是这些训练数据类别中之一,我们提前无法预测是那哪一个?因此,我们有的时候需要定向指定生成某些数据,比如我们想让G生成飞机,数字9,等等的图片数据。怎么做呢:1:就是给网络的输入噪声数据增加一些类别上的信息,就是说给定某些类别条件下,生成指定的数据,所以输入数据会有一些变化;2:然后在损原创 2020-10-18 20:05:29 · 3404 阅读 · 5 评论 -
深度学习《WGAN模型》
WGAN是一个对原始GAN进行重大改进的网络主要是在如下方面做了改进实例测试代码如下:还是用我16张鸣人的照片搞一波事情,每一个上述的改进点,我再代码中都是用 Difference 标注的。import torch as tfrom torch import nnfrom torch.autograd import Variablefrom torch.optim import RMSpropfrom torchvision import transformsfrom torchvis原创 2020-10-18 01:07:29 · 1707 阅读 · 0 评论 -
深度学习《变分自编码器》
一个模型总是从简单到复杂,由粗糙到精致不断演化。本文学习自:李宏毅机器学习视频(https://www.bilibili.com/video/av10590361/?p=29)很多截图也都是来自于视频内容。一:AE的特点之前我们学习了自动编码器,姑且称之为标准的编码器,给一个输入数据X,经过encoder转换为一个低维度向量,最后再经过decoder还原后输出图像。过程好比是下图所示,也就是每一个数据都在code的维度上是一个单点,用这个单点去还原图像,训练还是很快的,我们经过试验也能看出来训练原创 2020-10-17 00:43:30 · 1436 阅读 · 0 评论 -
深度学习《自动编码器》
一:编码器(AE)介绍它在形状上和普通的BP网络,或者是卷积网络很相似,都是由输入层,隐藏层,输出层组成的,只不过在我们的之前学习中,BP神经网络和卷积神经网络都用来做分类使用了,也就是在监督学习的场景下做分类。AE是是无监督学习工作的,数据本身没有标签,AE的输出Y的标签刚好就是数据本身,也就是说,输入端是X,输出端是Y,且恰恰Y=X,先来看看网络结构。输入端是数据本身X,最中间的隐藏层是code层,节点的数目维度要小于输出端的维度,在input层和code层之间,还可以自定义很多隐藏层,这一部分原创 2020-10-16 06:28:11 · 1838 阅读 · 0 评论 -
深度学习《GAN模型学习》
前言:今天我们来一起学习下GAN神经网络,上一篇博文我先用pytorch运行了几个网上的代码例子,用于生成MNIST图片,现在我才反过来写GAN的学习,这次反了过来,效果也是很显而易见的,起码有个直观的感觉,这一篇回归基本知识,介绍下GAN是什么?本文不会引用论文很复杂的公式。论文参考自:https://arxiv.org/pdf/1406.2661.pdf建议想学习的可以去论文学学,毕竟是大神之作,然后形成自己的认知。一:什么是GAN?在以前学习机器学习算法的时候,比如线性回归,逻辑回归,SVM等原创 2020-10-10 23:18:18 · 3485 阅读 · 1 评论 -
深度学习 《BiRNN》
写此博文的时候,已经是欧洲凌晨一点了,今天一口气写了三篇,趁着国庆节的尾巴,赶紧搞一搞,不然等周一上班了就时间少了。一:BiRNN也就是双向循环网络,之前我们学习的标准RNN,LSTM,GRU都是单向的,即便是我们学过多层的RNN也是单向的,每个Cell只关心当前时刻和之前时刻的输入,其实更复杂的场景下,尤其是语言环境下,我们需要关注语言的上下文,也就是需要根据为了时刻的输出来得到当前的输出,说白了就是不仅仅要向前看,用之前的数据参与当前的任务计算,还要向后看,用未来的输出参与当前任务计算。举个例子原创 2020-10-08 06:23:50 · 1775 阅读 · 1 评论 -
深度学习 《梯度消失和梯度爆炸》
一:梯度消失在深层网络中,一方面由于求导法则,计算越前面层次或者时刻的梯度,会出现很多的乘法运算,很容易导致梯度消失和梯度爆炸,另一方面还受到激活函数的影响,Sigmoid函数和tanh函数会出现梯度为0 的区域,前面也说了,BP网络中,使用skip connection可以解决梯度消失,典型的就是ResNet。在RNN中LSTM, GRU就是解决思路。其实我感觉他们的思路有异曲同工之妙,都是将先前的层次/序列的输出通过某种方式可以输入到某一层次需要用到的时候。求导的过程中,偏导数不至于为0,或者说降低原创 2020-10-08 06:11:33 · 198 阅读 · 0 评论 -
深度学习 《LSTM和GRU模型》
前言:前面我们学习了标准的单向单层和单向多层的RNN,这一博文我来介绍RNN的改进版本LSTM和GRU,至于为什么有这个改进的方案,以及如何理解它们,我会尽量用最通俗的语言俩表达。学习自博客https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 以及Andrew Ng的DL视频,我脑子比较笨,学了一整天才搞明白LSTM的设计初衷,于是赶紧整理下来免得遗忘,为了可快速书写,我就不自己画图了,截图来自上述博客。以下全是通俗的话。一:简单回顾下原创 2020-10-08 06:03:58 · 1711 阅读 · 0 评论 -
深度学习 《RNN模型》
前言:前几篇博文里面我们学习了传统的BP神经网络,你可以称为她是全连接的网络,也可以称之为DNN(denisty nextwork),也学习了卷积神经网络,在卷积神经网络里面还学习了池化等结构,并且在pytorch 上都拿MNIST数据集做了测试,总体感觉提取了特征后的CNN确实要比普通的神经网络效果要好一些。今天我们学习另外一种网络结构RNN,它具有什么特征结构呢?我们来一起学习下,只能说网络种类太多了。一:RNN的介绍之前我们学习的BP,CNN都具有一个共同的特点就是,每时每刻的输出都是且仅仅与当原创 2020-10-07 01:17:18 · 2634 阅读 · 0 评论 -
深度学习《CNN架构续篇 - 学习率衰减》
截图来自于吴恩达的深度学习视频。我们在参数更新的时候,存在一个步长α,这个参数代表了我们每一轮迭代在梯度方向上要进步的步伐长度,以前呢骂我们都是设置成规定值,那么有什么影响呢?首先简单不用说了,在某个梯度下降的过程中,在谷底(梯度最低值)的时候,可能出现始终徘徊到达不了最低点,甚至反而出现越来越大不收敛的情况,原因就是步长一致导致的,因此有个优化方式就是,将固定的步长α改成变化的值,怎么变呢?如下图,在固定步长下,在最优值附近会产生剧烈抖动,可能无法达到最优解。1) 随着迭代次数的增长逐渐减少,使用原创 2020-10-03 20:51:46 · 432 阅读 · 0 评论 -
深度学习《CNN架构续篇 - BatchNorm》
一:batch NormalizationBN算法的灵感来自于对图像的白化操作,白化就是对输入图像数据分原始分布规律转换到N(0~1)的分布,这样会使得收敛速度变快。在深度网络中每一隐藏层的输入都可以做这样的白化处理呢?随着网络深度的增加,收敛变慢的的原因还有就是数据的分布会变得越来越畸形,数据分布法还是能移动,这也是会导致梯度消失的原因,因此在每个隐藏层如果都做一个Normalization 的操作,那么就会消除数据不同特征之间的分布的特征范围差异,减少梯度消失的可能性。算法一共有四个步骤,包括计原创 2020-10-03 18:42:47 · 312 阅读 · 0 评论 -
深度学习《CNN架构续篇 - 1乘1卷积》
这里专门花一个小篇幅介绍下1*1卷积核。承上启下,为后面的内容做学习铺垫。一:11 卷积的操作实践卷积核一般有11,33,55的卷积核,今天来说说这个1*1卷积的使用,假如,步长Stride=1,Padding=1,那么根据之前的计算公式,输出图像就是和输入图像的大小(长度和宽度)是完全一样的了,而且,因为1×1卷积核只有一个参数,那么实际上也就是给元乳香乘以了某个系数,完全的线性变化(也可以理解成一个数字和一个矩阵的数乘运算的过程,多个通道的情况就是多个数乘的结果累加而已)。比如下面的计算过程:原创 2020-10-03 00:31:06 · 692 阅读 · 0 评论 -
深度学习《CNN架构续篇 - 梯度下降的优化》
骚话一下:今天是2020年10月2号,继续学习。本文依然是《CNN架构》的延续博文,重点介绍优化的新的梯度下降算法。一:梯度下降的种类说到梯度下降的方法,确实是求最优解的比较好的途径了,一步一步通过迭代到达最优解,之前在机器学习的博文里面,我们也是学习到了梯度下降的很多运用场景。今天我们来说一下,我们之前学习的梯度下降的算法,我们还有哪些优化的方式。梯度下降有是三个种类。1)批量梯度下降(Batch Gradient Descent)简单理解就是每一次迭代,都是根据所有的样本计算更新参数的。原创 2020-10-02 19:39:37 · 961 阅读 · 0 评论