【songyaqi】tensorflow学习小组总结

机器学习

#1

思考问题: 1、机器学习中,监督学习 or 非监督学习概念区分,应用场景调研? 2、做机器学习项目,有哪些环节? 3、深度学习,目前有哪些应用领域? 4、数据预处理,需要注意哪些? 5、tensorflow运行原理,架构有哪些核心点?

1.1监督学习(supervised learning)等同于分类,机器学习中的监督来自于训练数据集中标记的实例。(即已经分好类了)举例:现在有cat,dog,pig。现在有许多图片来匹配是哪个组。 1.2非监督学习(unsupervised learing)等同于聚类,训练数据集未标记。(现在有很多手写的数字,对他们进行分类,因为他们本身的不同所以产生了类别。) 2.(1)由实际问题转变为机器学习的问题(机器学习的类别,如分类,聚类,回归等,这一步其实很难,能解决实际问题的都是大佬)

(2)获取数据:这里需要掌握爬虫的知识,毕竟原始数据没那么容易获得。数据决定机器学习的上限,算法决定机器学习的下限。 (3)特征工程:在我看来,就是处理数据的过程,有数据预处理,数据清洗,数据转换等(这里非常重要) (4)模型训练、诊断、调优:不断的训练数据,找出最优化的模型。(最优化过程) (5)模型验证、误差分析:模型建好了,我们就可以验证这个模型是否正确,当然,不会完全满足这个模型,可以计算两者的误差。 (6)模型融合:。第一步是训练出多个不同的强学习器,然后考虑如何将这多个学习器组合起来,更进一步提高性能。第二大类称为机器学习元算法,这类算法本身就是多模型组合的结果。(不理解,不理解。) 参考:http://www.cnblogs.com/wxquare/p/5440664.html 3.盲人看照片 Facebook开发的一个移动应用,可以让盲人或者视力障碍者像正常人一样浏览照片。

实时语音翻译 微软的Skype能够将语音实时翻译成不同的语言。

自动回复电子邮件 Google的Mail可以代替您自动回复电子邮件。

目标识别 Moodstocks(已经被Google收购)推出的智能手机图像识别应用程序Moodstocks Notes,可通过照片识别书籍、CD、海报、传单和酒标等对象。

照片定位 Google能够根据照片进行拍摄场景定位。

照片整理 Google相册可以自动整理分类到常见的主题下面。

分类照片 Yelp可以根据业务分支对照片进行分类。

自动驾驶 自动驾驶技术应该是深度学习领域最为大家所知的应用了。

音乐作曲 可以基于不同的作曲家风格进行音乐组成。

绘画 可以基于著名的艺术家绘画风格创建。

新材料 利用深度学习发现新材料。

玩电子游戏 Google DeepMind能够创建视频游戏系统,通过观看游戏学习如何玩得很好。

脸部识别 这个就无需解释了。

标题党 一种RNN训练,生成吸引眼球的标题。

黑白照片变彩色 将黑白照片自动转换成彩色。

文本图像实时翻译 Google的一个移动应用,可将照片中的文字翻译成您可以理解的文字。 4.数据预处理:数据清理,数据集成,数据归约,数据变换与数据离散化。 5.TensorFlow作为分布式机器学习平台,主要架构如下图所示。RPC和RDMA为网络层,主要负责传递神经网络算法参数。CPU和GPU为设备层,主要负责神经网络算法中具体的运算操作。Kernel为TensorFlow中算法操作的具体实现,如卷积操作,激活操作等。(下课了,,,再补)


#2

第一题:

import tensorflow as tf
x=tf.constant(2)
y=tf.constant(3)
z=tf.constant(7)
res=x*y+z

with tf.Session() as sess:
    print(sess.run(res))

第二题:

import tensorflow as tf

mat1 = tf.constant([[3.,3.]])
mat2 = tf.constant([[2.],[2.]])

product = tf.matmul(mat1, mat2)

with tf.Session() as sess:
    result = sess.run(product)
    print(result)

#3

Week 2 学习任务:

思考问题:

1、back propagation 算法原理理解 ? 反向传播:利用链式法则递归计算表达式梯度的方法。

2、sigmoid函数、tanh函数和ReLU函数的区别?以及各⾃的优缺点?对应的

tf函数是? sigmoid :非线性激活函数,常用,缺点:输入非常大的时候或者非常小的时候,梯度为0,sigmoid不是0均值。 tanh函数就是由sigmoid函数演变而来。 Relu,优点:梯度不饱和,计算速度快,收敛速度快。缺点:太过脆弱。 3、 softmax和cross_entropy原理解释? softmax:相对比于sigmoid函数,是一种多分类的函数,将多个神经元的输出映射到(0,1)区间内,看成概率理解,让错误的错误的更严重,从而降低学习成本。 cross_entropy: 交叉熵,用于衡量学习成果的好坏。

4、tf.placeholder() 、tf.constant()、tf.Variable()的区别? tf.placeholder():用于得到真实的训练样本,就是一个占位符 tf.constant:常量,不可修改,常量矩阵。 tf.variable:可训练变量,模型的权重或者偏执值。 5、举例说明:tf.Graph() 概念理解? g = tf.Graph() with g.as_default():

Define operations and tensors in g.

c = tf.constant(30.0) assert c.graph is g

c = tf.constant(4.0) assert c.graph is tf.get_default_graph() 6、tf.name_scope()和tf.variable_scope()的理解? tf.name_scope():可以让变量有相同的命名。 tf.name_scope():可以让变量有相同的变量名。 7、tf.variable_scope() 和tf.get_variable()的理解? tf.get_variable():用来创建或者获取变量。 8、tf.global_variables_initializer() 什么时候使用? 返回用于初始化计算图中所有的global variable的op 9、学习中的知识点收获记录? 大佬们,哎,失恋了,因为感情的事 ,耽误许久,现在开始终于可以专心学习了。


#4

-- coding: utf-8 --

“”“ Created on Tue Dec 5 14:27:06 2017 学习了别人的代码之后,自己把代码重新打一遍 @author: SongYQ ”"" import tensorflow as tf import pandas as pd import matplotlib.pyplot as plt #这是我的训练集。 x_train=pd.read_table(“D:\code\tensor\Logistic\ex4Data\ex4x.dat”,header=None,sep=’\s+’,names=[‘x’,‘y’]) y_train=pd.read_table(“D:\code\tensor\Logistic\ex4Data\ex4y.dat”,header=None,sep=’\s+’,names=[‘lable’]) #权重,偏差 weight=tf.Variable(tf.zeros([2,2],dtype=tf.float64),name=‘weight’) bias=tf.Variable(tf.zeros([2],dtype=tf.float64),name=‘bias’) y_=tf.concat([y_train,1-y_train],1) train=tf.constant(x_train) #计算y的值, y=tf.nn.softmax(tf.matmul(train,weight)+bias) cross_entropy=-tf.reduce_sum(y_*tf.log(y))

cross_sum=[] train_step = tf.train.GradientDescentOptimizer(0.000001).minimize(cross_entropy) #运行会话 with tf.Session() as sess: init=tf.global_variables_initializer() sess.run(init) for i in range(1000): print(i) sess.run(train_step) cross_sum.append(sess.run(cross_entropy)) #画图,画出我们的损失函数 plt.plot(cross_sum,‘b-’) plt.title(‘loss change’) plt.xlabel(‘each train’) plt.ylabel(‘cross_entropy’) plt.show() #画出点分布图 plt.figure(‘point’) for index in range(len(x_train)): row=x_train[index:index+1] row2=y_train[index:index+1] if row2.lable.values==1.0: plt.scatter(row.x,row.y,c=‘r’) else: plt.scatter(row.x,row.y,c=‘b’) plt.show()