正在加载...

TF学习笔记,纪录一下,实现代码如下:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

#使用numpy生成200个随机点
x_data = np.linspace(-0.5,0.5,200)[:,np.newaxis]
noise = np.random.normal(0,0.02,x_data.shape)
y_data = np.square(x_data) + noise

#定义两个placeholder
x = tf.placeholder(tf.float32,[None,1])
y = tf.placeholder(tf.float32,[None,1])

#定义神经网络中间层
Weights_L1 = tf.Variable(tf.random_normal([1,10]))
biases_L1 = tf.Variable(tf.zeros([1,10]))
Wx_plus_b_L1 = tf.matmul(x,Weights_L1) + biases_L1
L1 = tf.nn.tanh(Wx_plus_b_L1)

#定义神经网络输出层
Weights_L2 = tf.Variable(tf.random_normal([10,1]))
biases_L2 = tf.Variable(tf.zeros([1,1]))
Wx_plus_b_L2 = tf.matmul(L1,Weights_L2) + biases_L2
prediction = tf.nn.tanh(Wx_plus_b_L2)

#二次代价函数
loss = tf.reduce_mean(tf.square(y-prediction))
#使用梯度下降法训练
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

with tf.Session() as sess:
    #变量初始化
    sess.run(tf.global_variables_initializer())
    for _ in range(2000):
        sess.run(train_step,feed_dict={x:x_data,y:y_data})
        
    #获得预测值
    prediction_value = sess.run(prediction,feed_dict={x:x_data})
    #画图
    plt.figure()
    plt.scatter(x_data,y_data)
    plt.plot(x_data,prediction_value,'r-',lw=5)
    plt.show()

运行结果如下图:

More …

MNIST数据集是手写数字0~9的数据集,一般被用作机器学习领域的测试。

本程序先导入数据,再利用最小梯度法进行训练使得样本交叉熵最小,最后给出训练之后程序的准确率。

交叉熵的定义:

y 是我们预测的概率分布, y’ 是实际的分布。

该指标用来衡量学习结果与实际情况的差距。

More …

代码可在https://github.com/TimeIvyace/MNIST-TensorFlow.git中下载,程序名为train.py。

以下代码实现了使用TensorFlow搭建神经网络解决MNIST手写体数字识别问题,此神经网络使用了激活函数去线性化,本身为三层全连接结构,带有指数衰减的学习率以及L2正则化损失函数,同时使用滑动平均模型进行优化。

More …

目前常见的深度学习框架有 TensorFlow 、Caffe、Theano、Keras、PyTorch、MXNet等。这些深度学习框架被应用于计算机视觉、语音识别、自然语言处理与生物信息学等领域,并获取了极好的效果。下面将主要介绍当前深度学习领域影响力比较大的几个框架,内容出自书籍《深度学习框架PyTorch:入门与实践》。

More …

选自Github等
机器之心编译参与:蒋思源

机器之心此前曾提供过机器学习和深度学习最好的九张代码速查表,不过近日又有博主发表了一次完全的速查表。虽然有一些和以前是重复的,但还是增加了一些新的速查表。本文前一部分主要重点描述新添加的速查表,后一部分再为读者提供一些以前的速查表资源。这些速查表暂时是保持英文的,因为后面一些不熟悉的库和函数我们可能编译不太精确。所以如果读者有较多需求,机器之心会考虑在 Github 中汉化这些概念和库函数速查表。文末提供了所有速查表的百度云下载地址。

首先第一张图描述了机器学习的主要分类和算法。虽然有几个表情没看懂,但我们发现这些表情还是挺有意思的。如下图所示,机器学习可分为监督学习、无监督学习和强化学习。接下来主要是回归方法、分类方法、聚类方法、降维方法和其他一些重要的特征。我们还可以看看具体算法的表情,随机森林是四棵不同的树我们能懂,但为什么支持向量机是一只独角兽?还有一些其实挺生动的,例如异常检测所用的表情就是三只熊猫夹一只狗熊。

More …

机器之心原创,机器之心编辑部,转自机器之心公众号。

作为最早关注人工智能技术的媒体,机器之心在编译国外技术博客、论文、专家观点等内容上已经积累了超过两年多的经验。期间,从无到有,机器之心的编译团队一直在积累专业词汇。虽然有很多的文章因为专业性我们没能尽善尽美的编译为中文呈现给大家,但我们一直在进步、一直在积累、一直在提高自己的专业性。

两年来,机器之心编译团队整理过翻译词汇对照表「红宝书」,编辑个人也整理过类似的词典。而我们也从机器之心读者留言中发现,有些人工智能专业词汇没有统一的翻译标准,这可能是因地区、跨专业等等原因造成的。举个例子,DeepMind 的一篇论文中有个词汇为 differentiable boundary tree,当时机器之心的翻译为可微分界树,但后来有读者表示这样的译法如果不保留英文很难明白表达的意思且建议翻译为可微分边界树。

因此,我们想把机器之心内部积累的人工智能专业词汇中英对照表开放给大家,希望为大家写论文、中文博客、阅读文章提供帮助。同时,这也是一份开放的表单,希望越来越多的人能够提供增添、修改建议,为人工智能的传播助力。

项目地址:https://github.com/jiqizhixin/Artificial-Intelligence-Terminology

组织形式

读者在此项目中,可通过以上表盘查看自己想要了解的专业词汇。在单个首字母中,表格的组织形式为:英文/缩写、汉语、来源&扩展。

来源&扩展是对该词汇的注解,内容为机器之心往期的相关文章。例如下图所示的「算法」,我们关联到的三篇文章是《回归、分类与聚类:三大方向剖解机器学习算法的优缺点》和《机器学习算法附速查表》和《深度学习算法全景图:从理论证明其正确性》。因此,我们希望不仅能提供相对应的术语,同时还希望能为读者提供每一个术语的来源和概念上的扩展。但由于这一部分工作量较大,我们还将与读者共同推进这一部分扩展的进程。

More …

概述#

原文地址:http://sebug.net/paper/books/dive-into-python3/porting-code-to-python-3-with-2to3.html

几乎所有的Python 2程序都需要一些修改才能正常地运行在Python 3的环境下。为了简化这个转换过程,Python 3自带了一个叫做2to3的实用脚本(Utility Script),这个脚本会将你的Python 2程序源文件作为输入,然后自动将其转换到Python 3的形式。案例研究:将chardet移植到Python 3(porting chardet to Python 3)描述了如何运行这个脚本,然后展示了一些它不能自动修复的情况。这篇附录描述了它能够自动修复的内容。

More …

选自sas,英文原文:http://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/机器之心编译

参与:黄小天、蒋思源、吴攀

本文主要的目标读者是机器学习爱好者或数据科学的初学者,以及对学习和应用机器学习算法解决实际问题抱有浓厚兴趣的读者。面对大量的机器学习算法,初学者通常会问自己一个典型的问题:「我该使用哪一种算法?」有很多因素会影响这一问题的答案,比如:

  • 数据的大小、质量及性质
  • 可用计算时间
  • 任务的急迫性
  • 数据的使用用途

在没有测试过不同算法之前,即使是经验丰富的数据科学家和机器学习算法开发者也都不能分辨出哪种算法性能最好。我们并不提倡一步到位,但是我们确实希望根据一些明确的因素为算法的选择提供一些参考意见。

机器学习算法速查表

机器学习算法速查表可帮助你从大量算法之中筛选出解决你的特定问题的算法,同时本文也将介绍如何使用该速查表。

由于该速查表专门针对数据科学和机器学习的初学者,所以在探讨这些算法之时,我们做了一些简化的假设。本文中所有推荐的算法均来自于程序编译反馈以及若干个数据科学家、机器学习专家和开发者的建议。对于没有达成一致意见的几个问题,我们会着重求同存异。

More …

GPU是替代不了CPU的,同样,CPU也替代不了GPU。如果形象点理解,GPU就像一群蚂蚁,这些蚂蚁都做着同样的事,而CPU就像一只猴子,这只猴子做着各种不同的事。

从根本上说CPU和GPU它们的目的不同,且有不同侧重点,也有着不同的性能特性,在某些工作中CPU执行得更快,另一工作中或许GPU能更好。当你需要对大量数据做同样的事情时,GPU更合适,当你需要对同一数据做很多事情时,CPU正好。

然而在实际应用中,后一种情形更多,也就是CPU更为灵活能胜任更多的任务。GPU能做什么?关于图形方面的以及大型矩阵运算,如机器学习算法、挖矿、暴力破解密码等,GPU会大幅提高计算效率。

简单地说,CPU擅长分支预测等复杂操作,GPU擅长对大量数据进行简单操作。一个是复杂的劳动,一个是大量并行的工作

其实GPU可以看作是一种专用的CPU,专为单指令在大块数据上工作而设计,这些数据都是进行相同的操作,要知道处理一大块数据比处理一个一个数据更有效,执行指令开销也会大大降低,因为要处理大块数据,意味着需要更多的晶体管来并行工作,现在旗舰级显卡都是百亿以上的晶体管

CPU呢,它的目的是尽可能快地在单个数据上执行单个指令。由于它只需要使用单个数据单条指令,因此所需的晶体管数量要少得多,目前主流桌面CPU晶体管都是十亿以下,和顶级GPU相差十倍以上,但它需要更大的指令集,更复杂的ALU(算术逻辑单元),更好的分支预测,更好的虚拟化架构、更低的延迟等等。

另外,像我们的操作系统Windows,它是为x86处理器编写的,它需要做的任务执行的进程,在CPU上肯定更为高效,你想每个线程的任务并不相同,基本上难以并行化,完全发挥不了GPU的长处。

那么,可以预见在未来,随着CPU进一步强化处理数据块的能力,我们将看到CPU和GPU架构之间的融合,而且,随着制造技术的进步和芯片的缩小,GPU也可以承担更复杂的指令。CPU与GPU间的分工虽然还是大有不同,但彼此间的交集无疑会更多。