使用小批量数据时,模型容易过拟合,所以需要对全量数据进行处理,我是用的是word2vec训练的词向量. 那么训练好对词向量如何加载呢?

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. -------------------------------------------------
  5. Version : None
  6. File Name : paddle_load_w2v
  7. Description : None
  8. Author : gongxijun
  9. Email :
  10. date : 2019-12-04
  11. -------------------------------------------------
  12. Change Activity:
  13. 2019-12-04:
  14. -------------------------------------------------
  15. """
  16. from __future__ import absolute_import
  17. from __future__ import print_function
  18. from __future__ import unicode_literals
  19.  
  20. __author__ = 'gongxijun'
  21. import paddle
  22. import paddle.fluid as fluid
  23. import paddle.fluid.layers as layers
  24. import paddle.fluid.nets as nets
  25. import numpy as np
  26. import math
  27. import codecs
  28. from huangdao.dataset import data_feeder
  29.  
  30. def load_parameter(file_name):
  31. embeddings = []
  32. words = []
  33. with codecs.open(file_name, 'r',encoding="utf8") as f:
  34. header = f.readline()
  35. vocab_size, vector_size = map(int, header.split())
  36. for line in range(vocab_size):
  37. word_list = f.readline().strip("\n").strip(" ").split(' ')
  38. word = word_list[0]
  39. vector = word_list[1:]
  40. words.append(word if len(word) > 0 else "unk")
  41. assert len(vector) == vector_size, "{} {}".format(len(vector), vector_size)
  42. embeddings.append(np.array(vector))
  43. assert len(words) == len(embeddings)
  44. return words, embeddings
  45.  
  46. word_dict_len = 74378
  47. word_dim = 128
  48.  
  49. def get_embedding(name, shape, is_sparse=True, dtype='int64'):
  50. """
  51. :param name:
  52. :param is_categorical: bool 是否是类标签
  53. :param shape: must be (a,b)
  54. :param dtype:
  55. :param is_sparse: bool
  56. :return:
  57. """
  58. alias_id = layers.data(name=name, shape=[1], dtype=dtype)
  59. assert len(shape) == 2, '{} must equal 2'.format(len(shape))
  60. alias_emb = layers.embedding(input=alias_id, size=shape,
  61. param_attr=fluid.param_attr.ParamAttr(name="embedding_{}".format(name)),
  62. is_sparse=is_sparse)
  63. alias_fc = layers.fc(input=alias_emb, size=shape[1])
  64. return alias_fc
  65.  
  66. words_emb = get_embedding("words", shape=(word_dict_len, word_dim))
  67.  
  68. place = fluid.CPUPlace()
  69. exe = fluid.Executor(place)
  70.  
  71. exe.run(fluid.default_startup_program())
  72. embedding_param = fluid.global_scope().find_var(
  73. "embedding_words").get_tensor()
  74. words, embeddings = load_parameter("/Users/gongxijun/data/item2vec.txt")
  75. embedding_param.set(embeddings, place)

paddlepaddle如何预加载embedding向量的更多相关文章

  1. Javascript图片预加载详解

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

  2. IIS初始化(预加载),解决第一次访问慢,程序池被回收问题

    你以为你可以慢,那是不可能的!你以为你可以不动,那也是不可能的! 河南是守株待兔故事情节的发源地,讲的是懒惰的农夫坐在树桩旁等待可爱的小毛兔撞树的故事,那么这种事情怎么可能天天出现呢!你以为的事并一定 ...

  3. FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时遇到的坑,给textview赋值时出现的空指针异常

    FragmentPagerAdapter加载fragment并使用setUserVisibleHint()处理预加载时,给textview赋值时出现的空指针异常 public class BaseFr ...

  4. ViewPager+Fragment取消预加载(延迟加载)(转)

    原文:http://www.2cto.com/kf/201501/368954.html 在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragmen ...

  5. js图片预加载

    图片预加载有大体有几种方式 1.html标签或css加载图片. 显而易见我们使用img标签或者通过标签的background-image属性都可以实现图片的预加载.但是为了避免初次载入过多图片影响体验 ...

  6. 利用简洁的图片预加载组件提升h5移动页面的用户体验

    在做h5移动页面,相信大家一定碰到过页面已经打开,但是里面的图片还未加载出来的情况,这种问题虽然不影响页面的功能,但是不利于用户体验.抛开网速的原因,解决这个问题有多方面的思路:最基本的,要从http ...

  7. ASP.NET MVC3 Razor 调试与预加载

    目录(?)[-] 获取服务器信息 FormsAuthenticationSlidingExpiration 属性 MVC3预加载   在ASP.NET MVC3开发中,调试中怎么也是不可缺少的,那对于 ...

  8. Javascript实现图片预加载【回调函数,多张图片】

    使用JS实现一组图片动画效果或者使用HTML5 Canvas渲染一系列图片等案例中,需要图片全部加载完成方可运行动画效果.此时程序中就会涉及多张图片预加载代码.当接二连三的案例中都涉及图片预加载时,就 ...

  9. JS实现图片预加载无需等待

    网站开发时经常需要在某个页面需要实现对大量图片的浏览;用javascript来实现一个图片浏览器,让用户无需等待过长的时间就能看到其他图片 网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考 ...

随机推荐

  1. OCR5:预处理

    Tesseract4.X已经有了初步成效(见下面的对比), 但目前结果对于训练之外的数据, 仍会有很大的偏差.想要更好的 OCR 结果, README 中重点强调的一点是: 在交给 Tesseract ...

  2. mysql字符串截取函数和日期函数

    注:mysql下标索引从1开始,并包含开始索引 1.left(str,len) index<=0,返回空 index>0,截取最左边len个字符 select ), ), ), )  结果 ...

  3. 【Axure】原型设计工具的概览与初识

    软件工程综合实践第三次个人作业 作业要求:通过搜索资料和自学,了解原型设计的工具 前言: Axure是一款强大的原型设计工具,具有比较大的用户基础,在此前提下沟通.传输.修改就显得十分方便,并且在细节 ...

  4. Docker 0x03:Install Docker

    目录 Install Docker Centos yum 安装 运行docker-daemon并开机自启动 运行hello-world应用docker容器中 Ubn Install Docker do ...

  5. python老师博客

    前端基础之HTML http://www.cnblogs.com/yuanchenqi/articles/6835654.html 前端基础之CSS http://www.cnblogs.com/yu ...

  6. Nuxt 知识点

    脚手架工具 create-nuxt-app 创建项目: $ npx create-nuxt-app <项目名> 启动项目: To get started: cd nuxt_demo npm ...

  7. 限制textarea 文本框的长度(收集了几个办法)

    文章参考地址:http://blog.csdn.net/nhconch/article/details/4223076 需求背景: 前几天,因为客户有一个需求说,需要对一个评论(一个textarea文 ...

  8. LeetCode 1062. Longest Repeating Substring

    原题链接在这里:https://leetcode.com/problems/longest-repeating-substring/ 题目: Given a string S, find out th ...

  9. moco搭建json api网站用于接口测试

    java -jar moco-runner-1.0.0-standalone.jar http -p 12306 -c config/conf.json 配置文件 [ { "request& ...

  10. 代码块和Java的API及Object类

    代码块 局部代码块 特点: 以”{}”划定的代码区域,此时只需要关注作用域的不同即可 方法和类都是以代码块的方式划定边界的 构造代码块 优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作 ...