机器学习与应用:图像识别、分布式、推荐系统
Tensorflow与深度学习课程第七天1、CIFAR图像分类2、分布式会话函数3、分布式TensorFlow4、推荐系统CIFAR图片分类CIFAR图片分类设计•cifar_data.py读取图片数据•cifar_model.py建立神经网络模型•cifar_train.py训练模型分布式会话API•MonitoredTrainingSession(master=‘’,is_chief=True,checkpoint_dir=None,hooks=None,save_checkpoint_secs=600,save_summaries_steps=USE_DEFAULT,save_summaries_secs=USE_DEFAULT,config=None)•分布式会话函数•master:指定运行会话协议IP和端口(用于分布式)“grpc://192.168.0.1:2000”•is_chief是否为主worker(用于分布式)如果True,它将负责初始化和恢复基础的TensorFlow会话。如果Fa它将等待一位负责人初始化或恢复TensorFlow会话。•checkpoint_dir:检查点文件目录,同时也是events目录•config:会话运行的配置项,tf.ConfigProto(log_device_placement=True)•hooks:可选SessionRunHook对象列表•should_stop():是否异常停止•run():跟session一样可以运行ophooks•tf.train.SessionRunHook•HooktoextendcallstoMonitoredSession.run()•1、begin():•在会话之前,做初始化工作•2、before_run(run_context)在每次调用run()之前调用,以添加run()中的参数。ARGS:run_context:一个SessionRunContext对象,包含会话运行信息return:一个SessionRunArgs对象,例如:tf.train.SessionRunArgs(loss)•3、after_run(run_context,run_values)在每次调用run()后调用,一般用于运行之后的结果处理该run_values参数包含所请求的操作/张量的结果before_run()。该run_context参数是相同的一个发送到before_run呼叫。ARGS:run_context:一个SessionRunContext对象run_values一个SessionRunValues对象,run_values.results注:再添加钩子类的时候,继承SessionRunHook常用钩子•tf.train.StopAtStepHook(last_step=5000)指定执行的训练轮数也就是max_step,超过了就会抛出异常•tf.train.NanTensorHook(loss)判断指定Tensor是否为NaN,为NaN则结束注:在使用钩子的时候需要定义一个全局步数:global_step=tf.contrib.framework.get_or_create_global_step()分布式Tensorflow分布式Tensorflow是由高性能的gRPC框架作为底层技术来支持的。这是一个通信框架gRPC(googleremoteprocedurecall),是一个高性能、跨平台的RPC框架。RPC协议,即远程过程调用协议,是指通过网络从远程计算机程序上请求服务。分布式原理单机多卡+多机多卡(分布式)+多机多卡分布式的架构集群参数作业(parameterjob)任务1任务2工作作业(workerjob)任务1任务2注:参数作业所在的服务器称为参数服务器(parameterserver),负责管理参数的存储和更新;工作节点的服务器主要从事计算的任务,如运行操作,worker节点中需要一个主节点来进行会话初始化,创建文件等操作,其他节点等待进行计算分布式的模式分布式API•1、创建一个tf.train.ClusterSpec,用于对集群中的所有任务进行描述,该描述内容对所有任务应该是相同的•2、创建一个tf.train.Server,用于创建一个任务(ps,worker),并运行相应作业上的计算任务。cluster=tf.train.ClusterSpec({“worker”:[“worker0.example.com:2222”,/job:worker/task:0“worker1.example.com:2222”,/job:worker/task:1“worker2.example.com:2222”],/job:worker/task:2"ps":[“ps0.example.com:2222”,/job:ps/task:0“ps1.example.com:2222”]/job:ps/task:1})1、cluster=tf.train.ClusterSpec({"ps":ps_spec,"worker":worker_spec})1、创建集群2、创建服务•tf.train.Server(server_or_cluster_def,job_name=None,task_index=None,protocol=None,config=None,start=True)•创建服务(ps,worker)•server_or_cluster_def:集群描述•job_name:任务类型名称•task_index:任务数•attribute:target•返回tf.Session连接到此服务器的目标•method:join()•参数服务器端,直到服务器等待接受参数任务关闭3、工作节点指定设备运行•tf.device(device_name_or_function)•选择指定设备或者设备函数•ifdevice_name:•指定设备•例如:"/job:worker/task:0/cpu:0”•iffunction:•tf.train.replica_device_setter(worker_device=worker_device,cluster=cluster)•作用:通过此函数协调不同设备上的初始化操作•worker_device:为指定设备,“/job:worker/task:0/cpu:0”or"/job:worker/task:0/gpu:0"•cluster:集群描述对象注:使用withtf.device(),使不同工作节点工作在不同的设备上分布式案例1、创建集群对象2、创建服务3、服务端等待接受参数4、客户端使用不同设备进行定义模型以进行计算5、使用高级会话类作业:将图片识别的程序改成分布式推荐系统1、推荐系统的背景2、推荐系统的意义3、推荐系统原理介绍4、推荐系统应用生活中无时无刻都在使用着推荐系统推荐系统的意义•互联网时代的信息量过载:•视频网站每天都会有上万小时的视频上传•购物网站每天上架百万商品•每天大概数以万计的新闻报道解决信息过载•搜索引擎时代•分类导航雅虎•搜索谷歌、百度•个性化时代(提高用户粘度、增加营收)•系统自动推荐相关的东西今日头条、豆瓣、电商如何去给你的网站用户推荐?•推荐的依据:•用户的历史行为•用户的兴趣点•社交关系•…推荐系统的结构数据处理与模型学习推荐模型推荐给用户推荐系统的原理1、推荐系统的分类2、基于物品的协同过滤分析3、改进的协同过滤-隐语义模型4、推荐系统开源库推荐系统的分类基于内容的推荐:1、推荐系统最初使用的最广泛的推荐机制2、根据推荐物品或内容的元数据特征,发现物品或者内容的相关性,然后进行推荐相似的物品(tf-idf权重)3、物品通过内容比较关联:电影题材:爱情片/动作片/科幻片/惊悚片电影人物:范迪塞尔/保罗/吴京电影时间:2017/7/7…4、优缺点:物品相似度的分析仅仅依赖于物品本身的特征,这里没有考虑人对物品的态度基于协同过滤的推荐(CFCollaborationFilter)•基于用户的协同过滤(UserCF)•计算用户的相似度,推荐相似用户的喜好•基于物品的协同过滤(ItemCF重点)•计算物品的相似度,推荐相似度高的物品(不同于基于内容的推荐)推荐系统的分类基于用户的协同过滤0.60.450.80.3基于物品的协同过滤基于物品的协同过滤分析步骤:(1)计算物品之间的相似度(2)计算被推荐物品的兴趣度(评分)(3)根据物品的相似度和用户的历史行为给用户生成推荐列表用户电影打分表user/moviem1m2m3m4m5A243B15C324D321.相似度计算公式公式:注:为喜欢物品的用户数,为喜欢物品的用户数,式子理解为:同时喜欢两者的用户数量/对于用户A来说:对于用户B来说对于用户C来说对于用户D来说合并四个矩阵,得出一个总矩阵:计算相似度为:注:以m1,m3为例,从用户评分列表里面得出,1/2.计算用户对未看过电影兴趣度公式:注:为物品的相似度,用户A举例:未看过m2,m4那么对于m2:m3_m2:40.50=2.00m4:m3_m4+m5_m4=40.41+30.41=2.87ItemCF与UserCF的综合对比公司算法用途DiggUserCF个性化网络文章推荐GroupLensUserCF个性化新闻推荐NetFlixItemCF电影推荐AmazonItemCF购物推荐豆瓣ItemCF电影、书籍推荐为什么新闻推荐使用UserCF算法,而购物网站使用ItemCF算法?UserCF算法的推荐结果着重于反映那些与目标用户兴趣相似的小群体的热点,而ItemCF算法的推荐结果着重于维护目标用户的历史兴趣。换句话说,UserCF的推荐更加社会化,而ItemCF的推荐更加个性化。越是热门的类,其类内物品的相似度越大。除此之外,不同领域的最热门物品之间的相似度往往也是很高的ItemCF的缺点改进的协同过滤-隐语义模型•目的:用户评分矩阵中,有很多位置空着的,希望能够正确填满未打分的项目•主要思想:找到隐藏因子,可以对user和item进行关联隐因子矩阵分解公式:注:p为用户u与k个隐类的关系,q为物品i与k个隐类的关系,此公式能够预测未知的打分损失函数最小化求解损失函数:注:真实值与预测值的偏差求解:通过梯度下降求解到最优解p,q(不断学习更新)隐语义模型与ItemCF、UserCF对比•理论基础隐语义模型有较好的理论基础,后两种是一种基于统计的方法,没有学习过程•计算复杂度隐语义模型时间复杂度高于后两者,主要是需要多次迭代•在线实时推荐隐语义模型不能在线实时推荐,需要线下计算好•推荐解释ItemCF、UserCF有较好的推荐解释,利用用户的历史行为来解释推荐结果而隐语义模型它的隐类能够代表一类兴趣或者物品,却很难用自然语言描述并生成解释展现给用户推荐系统开源库LibFMLibFM是专门用于矩阵分解的利器Python-recsys一个非常轻量级的开源推荐系统,Python-recsys主要实现了SVD、NeighborhoodSVD推荐算法(python2)CrabCrab是基于Python开发的开源推荐软件,其中实现有item和user的协同过滤,只支持python2pyspark目前使用比较广泛的机器学习库,集成了推荐系统(python2)python-recsys安装(python2)1、安装依赖项:pipinstallcsc-pysparsepipinstallnetworkxpipinstalldivisi22、源码安装python-recsystarxvfzpython-recsys.tar.gzcdpython-recsys#为了不影响外面环境,在虚拟环境中运行pythonsetup.pyinstall推荐系统应用•电影推荐数据集MovieLens6M数据集6000名用户对4000部电影的100万条评分数据•分为三部分:电影信息,用户信息,打分信息每位用户至少评判20场电影id,电影名称,电影类型id,性别,年龄,职业用户id,电影id,评分,时间戳python-recsys-----矩阵分解API•recsys.algorithm.factorize.SVDSVD分析•recsys.algorithm.factorize.SVD()•矩阵分解法推荐•method:•load_data(filename=,sep=,format=):加载文件数据1、filename文件名2、sep分割的字符,3、format为字典,矩阵的value,row,col指定为文件中的第几列,还有ids指定数据类型•set_data(train):直接输入获取的数据,SVD没有加载文件时候•compute(k=,min_values=10,post_normalize=None,savefile=):计算评分矩阵1、K为隐因子数量,默认1002、min_values为某物品评分用户数量少于10个的直接删除3、post_normalize:数据前进行归一化4、savefile:文件的名字movielens,例如movielens.zip•similarity(item1,item2):计算两个物品相似度•similar(item):获得默认10个相近的物品•recommend(userid,is_row=False):推荐给某用户的指定数量的物品或者为某物品没有打过分的用户打分前10名,is_row为True则id为数据格式中的row的id,•predict(itemid,userid):返回预测某用户对物品的评分•get_matrix().value(ITEMID,USERID)获取评分矩阵中的值•load_model(filename):加载本地模型,模型加载无需训练•save_model(filename):保存模型到本地,zip格式案例分析1、加载数据2、计算评分矩阵(compute)3、推荐指定用户物品4、推荐评估(Data、RMSE)python-recsys-----数据API•recsys.datamodel.data.Datadata分析•recsys.datamodel.data.Data()
提供机器学习与应用:图像识别、分布式、推荐系统会员下载,编号:1701027051,格式为 xlsx,文件大小为69页,请使用软件:wps,office Excel 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。