周末在家

    这个周末没有怎么加班,周六上午去做了一下晓玲让帮忙做的小功能,本来准备花一天时间去做的,万万没有想到最后一上午就做完了,然后去公司蹭顿中饭之后就默默回来了,回来之后什么都没有干睡了一觉看了两部电影,都是没有什么脑子的搞笑片,不知道为啥,在家呆着就是不太想做什么费脑子的事情,感觉在公司已经快把脑细胞耗尽了,在家什么都不想干,不过如果什么都不干又觉得特别害怕.真的特别害怕,害怕自己一天不学习,一天的放纵就会赶不上别人,就会堕落,也不知道这些压力从哪里来的.
    昨天中午做梦,梦见自己在乡下老家建了一所房子,有小小的房子和大大的院子,有花有草有水有鱼,每天做着简单的工作然后回家打扫打扫卫生,做饭钓鱼,一切都是那么的美好,可是那不过都是梦而已,醒来之后脑袋特别痛,想着要不看看书吧,可是书上那些小字怎么都看不进去,脑袋里默默想起了海子的诗句"有一所房子,面朝大海,春暖花开!"可是我们怎么能够有一所房子面朝大海,春暖花开呢,不过是一场美丽的幻想罢了,回到现实中算一算如果自己要做一个自由职业者,要有一所美丽的房子那得需要多少钱呀,可能我这一辈子都挣不够这么多钱吧,回到现实中后果然心里冰凉冰凉的,在这个秋老虎还在肆虐的时候让我如坠冰窟.好吧,如果现实不如我们想象的美好应该怎么办呢?
    有一个问题我不止一次的问过自己,如果重来一次我还希望做自己么?我想我是愿意做自己的,虽然我也希望自己生活在一个更加有钱的人家,最好是永远不需要担心钱的问题,可是要我因为钱放弃现在的自己似乎又不是那么愿意,虽然现在我有很多不完美,有很多假如的幻想,可是我对自己还是满意的吧,虽然我家里不是很有钱,可是也不曾缺少我的吃穿;虽然老爸老妈很难交流,可是也会倾听我的意见;找了一个自己目前为止还比较满意的工作,在工作上也没有什么解不开的难题,领导同事们也能够很好的相处,我想我应该是满意的吧.有时候快乐这种事情是无法言说的,我们总是把痛苦把槽点挂在嘴边,可是谁把快乐和幸福挂在嘴边呢,我想大概还比较满意,可是又有很多假如这才是生活的常态吧,生活本来就不完美,我们又何必要去苛求呢,如果对现在还比较满意那就好了吧.

阅读全文

tensorflow-十五弹

介绍了很多关于神经网络的理论的东西,当然理论的介绍还差得远,但是再介绍理论上的东西未免显得太无聊了,所以我们中间穿插一些关于tensorflow的小技巧的介绍以及相关算法的简单说明:

  • 自定义损失函数:在神经网络的学习过程中我们使用损失函数去判别学习好坏,实际上损失函数的定义有很多种,tensorflow中也内置了很多种类的损失函数,一般来说这些损失函数已经能够训练出比较好的效果了,但是对于实际问题我们常常会有着不同的要求,在此情况下所需的损失函数也会有所差异,在tensorflow中可以使用自定义的损失函数来进行约束,使得求解结果满足要求.示例代码如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    import tensorflow as tf
    from numpy.random import RandomState

    #y=wx
    batch_size = 8
    x = tf.placeholder(tf.float32,shape=(None,2),name='x-input')
    y_= tf.placeholder(tf.float32,shape=(None,1),name='y-input')
    w1= tf.Variable(tf.random_normal([2,1],stddev=1,seed=1))
    y = tf.matmul(x,w1);

    #loss
    """
    loss_less = 10
    loss_more = 1
    loss = tf.reduce_sum(tf.where(tf.greater(y, y_), (y - y_) * loss_more, (y_ - y) * loss_less))
    """
    """
    loss_less = 1
    loss_more = 10
    loss = tf.reduce_sum(tf.where(tf.greater(y, y_), (y - y_) * loss_more, (y_ - y) * loss_less))
    """
    loss = tf.losses.mean_squared_error(y,y_)


    ##
    train_step = tf.train.AdamOptimizer(0.001).minimize(loss)

    #data
    rdm = RandomState(1)
    X = rdm.rand(128,2)
    Y = [[x1+x2+(rdm.rand()/10.0-0.05)] for (x1,x2) in X]

    #train
    with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)

    STEPS = 5000
    for i in range(STEPS):
    start = (i*batch_size)%128
    end = (i*batch_size)%128+batch_size
    sess.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]})
    if(i%1000==0):
    print('After %d train step(s) ,w1 is: '%(i))
    print sess.run(w1), '\n'
    print 'finnal w1 is: \n',sess.run(w1)

阅读全文

CAD二次开发问题集中解决

使用了一段时间的AutoCAD后遇到了很多问题,感谢一些网上的大神给我提出了很多宝贵的意见和指导,虽然有时候会很麻烦,有时候会让我绞尽脑汁,有时候会很抓狂但是问题总是在一步一步的解决,当然啦对于新的帮助最大的还是万能的百度,但是有时候网上的东西写的比较简略或者由于版本过于陈旧而缺少了参考的价值,而自己获得了很多帮助所以也想着写一些东西出来为后来学习的人做贡献。
好了废话不多说,直接上干活,说说自己在开发的过程中所面临的问题以及自己的解决方式,当然我提出的解决方式可能不是最好的额,不过也可以让大家作为参考:

阅读全文

有罪或无罪

    什么都没有做就在找电影看,看到了<十二公民>这部电影,内心还有有一些震撼,电影的场景很简单,就是一群家长学生请来的家长或者是亲朋来开一个会模拟陪审团来决定一个影响很大的杀人事件中一个当事人是否有罪,案件比较简单,一位富二代从小被生父抛弃,后来长大后与生父发生争执,在争执过程中有证人说他听见富二代对他的生父说要"我要杀了你"另外还有一位证人从城际列车上看见杀人的过程,同时有位女证人是目击证人.刚开始的时候大家一致认为富二代是有罪的,除了一位,刚开始的时候大家都试图去说服他,可是随着案件进一步分析陪审团成员一个个被说服,然后该投了无罪的一个故事,全片的场景非常简单,在一个破体育馆内大家围成一个圈各自抒发自己的看法以及争执的过程.
    虽然剧情很简单,但是其中哦你有很多值得思考的问题,有地域歧视,有仇富,有各种矛盾等,这些都是本片的亮点,不过让我最留下最深刻印象的却是整个推理的过程,看似简单的证词实际上有多么的矛盾,真相往往藏在无数谎言编织的外衣之下,而我们所说的话又能有多少是真的呢?老人的证词言之凿凿的说自己听见富二代和生父发生了争执,然后说出"我要杀了你"这句话,然后十几秒的时间之后他推开门看见富二代杀人后逃窜.可是通过案情分析我们发现并不是这样,到底老人是为什么说谎,是无意还是有意.在片中给我们的解释是老人想要获得他人的重视,一个生活艰难的老人,一辈子不被重视,不管说什么都没有人听没有人在意,好不容易又一个上电视的机会,他渴望被重视所以才用肯定的语气说出了那些自己都不确定的事情么?想想我们自己,是不是也曾是这样,为了面子,为了各种各样的原因说了许多我们自己都无法确定的事情,而这些事情往往有着重大的意义.另外那个目击姑娘的证词同样存在着这个问题,既然看不清到底谁是杀人犯,为什么会确定就是那个富二代呢?也许每一个人都渴望被重视,好不容易得到这个机会的情况下我们为了体现自己的重要性而往往言之凿凿的说出一些我们自己都不确定的事情.
    另外,我们为什么一听别人的言论,一听所谓的证词就会去偏信一些事情呢?是因为我们有我们自己生活的背景,我们总是用我们自己生活的圈子来观察别人,总是会带着我们自己的偏见,而被偏见蒙蔽了双眼让我们无法去看清楚事实,实际上多数不一定是正确,我们需要有自己的判断,在面对问题,特别是重大问题的过程中我们不能够仅仅凭借着我们自己的经验去做出判断,但是很多时候我们就是这样做的,可是实际上我们做出的决定对当事人来说却是一万分的重要不是么?
    看了这部电影还是有很大的触动的,其实那些关于社会关于各个阶层的区分以及他们对于事情不同的看法我倒是没有什么特别的感慨,反而是那些人在一步步走向真理的过程让我倍感幸福,是的我们每一个人都值得被保护,每一个真相都值得刨根问底的弄个明白,而我们也应该学会向真理低头.

阅读全文

tensorflow-十四弹

在上一讲中我们已经结束了传统学习算法的学习,马上要转入深度学习,那么在这里就不得不进行一些铺垫的工作,为什么我们要提深度学习,传统的学习方法究竟在哪些地方不如深度学习,是否有可能这些缺点会被克服以及深度学习的所面对的问题.
总的来说,促使机器学习发展的部分原因在于传统学习算法对于高维,复杂函数的泛化性较差,在高维空间中的复杂函数的学习传统的学习方法往往面临着巨大的计算代价,而促进机器学习发展的主要有两点,1.维度灾难;2.流型学习.下面分别就这两个问题进行进一步的描述:

阅读全文

tensorflow-十三弹

上一讲中提到了一些机器学习的概念,现在我们讲讲机器学习的算法,机器学习的算法总的来说包括两大类,一类为监督学习方法,另一类为无监督学习方法,监督学习就是在具有训练样本的情况下对样本进行学习的过程,而无监督的学习方法针对没有训练样本的情况,下面就这两大类方法分别介绍:

1 监督学习方法

1.1逻辑回归方法:

对于明确的概率分布 $p(y|x)$ 使用最大似然估计找到对于有参数分布族 $p(y|x;\theta)$ 其中 $\theta$ 为参数向量,则线性回归族为:
$p(y|x;\theta)=N(y;\theta^T x,I)$
进一步,对于分类问题来说,是求解x属于某一个类别的概率,假设求解x属于类别1的概率,则为:
$p(y=1|x;\theta)=\delta(\theta^T x)$
其中 $\delta$ 为sigmoid函数,使用sigmoid函数的主要原因在于将线性变换的概率映射到0-1之间,实际上为什只求解x属于类别1的概率,因为对于一个二类分类的结果来说,x只有两种情况,在求解得到x属于类别1的概率后x属于类别2的概率也能够获取到了.

阅读全文

工作两个月

    自从上次跟亮仔他们聚了之后到现在差不多也有三个星期了,现在的工作对于我来说压力也不算大,总是觉得有些跟自己的想法不一样也不知道是为啥,可能还是觉得没有想象中那个样子吧,感觉就是已经做好了拼尽全力的准备然后突然一拳打在了空气上的感觉,难道是因为在这里确实没有什么压力的缘故么?我觉得有点烦,好像一直都在准备着大干一场然后机会总是很少,让我觉得自己好像很没有用的感觉,有时候觉得这样也挺好的,至少没有什么压力,过得还比较轻松吧,看着做我们研发部门的小伙伴们也觉得还好并没有什么压力吧,毕竟不是私企,这边做的好像也不如想象中的那么有挑战性,不说没有新东西学吧,总是感觉做的东西有些,额怎么说呢,有些在自娱自乐的感觉,不够主流。
    我觉得让自己焦虑的主要原因就在这里了,毕竟如果做的东西并非主流,那么自己的适应面就会比较狭窄,在这样的情况下难免会有一种无所适从的感觉,此外也与自己一直以来在硕士阶段的学习有些关系吧,虽然在实验室也会做项目,可是更多的时候是以一种研究和学些的心态去面对工作的学习,并且在这个过程中我们所接触到的东西都属于比较前沿的东西,所考虑的问题更多的是如何去创新,去做算法,做些在工作中大家都会觉得不是那么接地气的东西,习惯了对每一个算法,每一个软件都刨根问底的弄个明白,而不是就单单知道怎么用,虽然成本很好,可是每次弄明白一个算法,一个功能都让我倍感快乐。可是工作中却不容许我这样了,每一个项目都有着明确的deadline,在工期的压力下没有人愿意冒着这么大的时间成本去纠结那一个个看起来简单实际上却并不简单的小问题,每个人都瞄着大目标去做,而那些需要注意的细小的点自然是能够不去深究就不要深究了,这样对大家都好不是么,可是这让我不开心,让我觉得自己很虚,或者说自己这么多年所学的东西都显得那么苍白,是呀,这么多年所做的摄影测量能比的上smart3D做得好么,如果不能那么有什么意义,费尽心思改进的算法比那些经典的方法好么,如果没有那有什么作用呢,所谓的机器学习,所谓的人工智能现在看起来不过是实验室的一个概念而已,对于一个公司来说人工智能的成本甚至比人力还要高,如果是这样那么为什么还要去发展呢!未来会怎么样,谁都不知道可是我应该怎么办,这个也是一个很值得思考的问题.
每天都在学习,在维护一个github仓库,在学习tensorflow在了解每一个前沿的知识,在学习最基本的数学理论希望这些能够让自己在未来受益,在公司师父让我学习项目管理的知识领导给我讲了职业规划,其实我很感激我师父,感激公司领导,他们都很好。可是我还是在焦虑,在为未来焦虑,害怕自己所学的东西会随着时间一天天过去而遗忘,而落后然后我就成为了那些别人口中对知识一无所知的人,这样的感觉很不好,至少在曾经吐槽导师的时候我完全不会有这样的焦虑,可是进入工作之后这样的焦虑就渐渐凸显出来了,不过我觉得这样也至少不是一件坏事吧,对未来的焦虑至少会让我不断的学习不断进步吧,毕竟还年轻,乘着精力和身体都还受得了的情况下好好努力吧,毕竟也和那些在清华,在UCLA的高才生们又站在了同一起跑线,可能我要靠后一点吧,不过我相信这又是一个开始……

阅读全文

tensorflow-十二弹

继上一讲中的几个概率的基本概念之后这次我们记录几个提的比较多,但是可能搞得不是那么明白的几个定义:
1.vc维:在介绍vc维之前首先要明白一个概念那就是散度(shatter),如果对于一个给定的集合$S={x_1,…,x_d}$ 如果一个假设类H能够实现集合S中所有元素的任意一种标记方
式,则称H能够分散S.假设对于两个样本点$A,B$其将其进行二类分类,则划分方式有 ${(A+1,B-1);(A+1,B+1);(A-1,B-1);(A-1,B+1)}$四种情况,则这两个样本的散度为 $2^2$ 实际上对于具有N个样本的数据集其散度为$2^N$, 对于一个二类分类器,我们可知二维中的一条直线对多可以实现对三个样本的集合打散,如图:
 
则上述8种情况包含了所有的组合.二VC维则是衡量这种分类器对于样本打散情况的量,我们说平面上直线分类器的VC维为三,当然对于三个点的情况,如果三个点处于一条直线上也有可能线性分类器无法实现全划分,但是这种情况并不影响.实际上二维平面上的找不到一条直线能够将四个点打散.但是实际上二维平面不止有线性分类器一种分类器,如下图:
 
上述矩形分类器能够实现将二维空间中四个点打散,所以二维的矩形分类器的VC维是4从以上分析可以看出VC维就是能分散集合中中的最大样本数目.好了理解了VC维我们来看一个比较特殊的函数集,正弦函数集 ${asin{wx+b}}$ 我们知道正弦函数几乎可以拟合任何一种情况(傅里叶),所以对于包含任意数量的点集都能够将其打散,因此正弦函数集的VC维为无穷大.
2.非参数模型: 介绍非参数模型之前需要介绍一下参数模型,什么是参数模型,就是首先假设模型的分布的模型的已知的,在此情况下通过样本估计模型的参数,这样的模型叫做参数模型,而非参数模型假设样本分布是自由的,因此不需要对模型的参数进行估计而是通过其他的手法进行估计.
3.点估计: 点估计是有样本估计总体分布所含未知参数的真值,称为估计值,点估计的精确程度用置信区间表示,由于样本是从总体中获取,且假设每一个样本都是独立同分布,则可以用样本对总体进行估计.点估计的方法:最大似然法:最大似然法是一种使用得最广泛的点估计方法,最大似然估计就是利用已知样本的结果反推最有可能导致这样结果的参数值,假设有样本 $X={X_1,X_2,…,X_n}$ 其样本的分布密度为$L(X,\theta)$,现在样本是已知的,则将L当作 $\theta$的函数称为似然函数,则将似然函数表述为:$f(X_1,\theta),f(X_2,\theta)…f(X_n,\theta)$,其中$f(X,\theta)$ 为总体分布的密度函数或概率函数在已知样本的情况下可以分布参数进行估计;最小二乘方法,最小而乘的参数估计是保证计算的函数尽可能好的拟合观测样本从而得到拟合函数.
4.估计的无偏性:无偏估计意味这样本估计量的数学期望等于其总体分布的真值,一个估计是无偏的则说明其概率分布的期望值等于它所估计的参数,无偏性并不是说我们用任何一个特定样本得到的估计值等于d,甚或很接近0。而是说,如果我们能够从总体中抽取关于Y的无限多个样本,并且每次都计算一个估计值,那么将所有随机样本的这些估计值平均起来,我们便得到总体的均值.
5.核方法: 核方法的主要思想为,在低维空间中线性不可分的点集将其映射到高维空间中则往往变为可分的,而这个将低维空间向高维空间映射的方法我们称为核方法,实际上通过核方法将高维向量中的内积转换为低维的点的核函数计算,由此大大简化了在高维空间的计算方法,实际上核函数的构造具有很多技巧以及对于核函数是否存在也具有一套判断方法,这个设计到比较复杂的过程以后有机会在进行详细说明.
今天介绍了概率论中的一些重要的概念,这些概念对于我们理解机器学习的算法至关重要,另外机器学习的基本方法是深度学习的基础,因此我们需要将这些概念理解清楚才能够更好的学习深度学习的理论和方法.
参考资料:
VC维参考资料
非参数模型资料
点估计
核方法

阅读全文

基于Google影像的大数据几何校正思考

    前一段时间一直在闲暇的时候做着无人机影像处理方面的工作,也算是小有建树了。前两天突然有了一个思考,那就是关于如何更快速的进行校正处理,实际上我们处理的图片,或者说我们处理的影像在很多情况下只需要有一个准确的相对位置关系而并不是需要绝对精度有多么的高,因为理论上影像绝对精度不可能高于影像分辨率,因为控制点的选取本身对于影像来说从影像上选取像控点就存在误差,而亚像元精度的像控点选取通过测量控制点的方式几乎是无法做到的,鉴于此种情况,我认为影像的校正处理还是应该集中在相对位置的校正上,而绝对未知跟具体的影像质量硬件技术有关。实际上在地图应用的过程中能够与底图叠合我们认为就是比较精确的了,那么我们是不是可以利用Google Map提供的瓦片数据自动的选取控制点进行校正。
对于以上采用Google Map瓦片数据进行校正我认为主要有两个优势:

阅读全文

tensorflow-十一弹

到现在已经很久么有进行tensorflow的说明了,不过我们还是用这个主题继续将一下机器学习相关的数学基础,在上一次提到了概率论和统计分析,我们这次详细讲讲概率,提到概率就不得不提随机变量,简单的说随机变量就是在某一个范围内可能取得任意一个值的变量,由于其取值是不确定的,由此而产生了概率,由随机变量的描述可以看出,其实概率是一种描述随机变量状态的一个数学基础,随机变量可能是连续的,也可能是离散的,这个跟所选的随机变量有关。提到了随机变量就必须提出另外一个重要的概念,那就是就是概率分布,概率分布是描述一个或一系列随机变量处理其取值范围内任意一种状态的可能性,这个描述很说明概率实际上用来描述随机变量,而随机变量的取值是随机的,因此对随机变量的描述只能描述为处于某种状态的可能性。由于是描述可能性,因此概率分布有一些特点:

阅读全文