Python Tensorflow使内存崩溃google colab

Python Tensorflow使内存崩溃google colab,python,memory-management,tokenize,tensorflow2.0,Python,Memory Management,Tokenize,Tensorflow2.0,在预处理数据的同时,我正在为阿拉伯语方言(比如某个地区的俚语)进行单词嵌入: 加载json 提取线条 清除URL、表情符号和其他 删除至少有2个单词的列表 创建上下文,目标窗口为2 使用tf.keras.preprocessing.text.Tokenizer在文本上匹配 问题:从文本创建到矩阵 我想从第7步开始做一个热编码,这样我就可以把它传送到网络上 def loadJson(file): import json lines=[] with open(file) as f:

在预处理数据的同时,我正在为阿拉伯语方言(比如某个地区的俚语)进行单词嵌入:

  • 加载json
  • 提取线条
  • 清除URL、表情符号和其他
  • 删除至少有2个单词的列表
  • 创建上下文,目标窗口为2
  • 使用tf.keras.preprocessing.text.Tokenizer在文本上匹配
  • 问题:从文本创建到矩阵
  • 我想从第7步开始做一个热编码,这样我就可以把它传送到网络上

    def loadJson(file):
      import json
      lines=[]
      with open(file) as f:
        for line in f:
          lines.append(json.loads(line))
      return lines
    
    def extractSentences(lines,language):
      posts=[]
      comments=[]
      for line in lines:
        if line['language']==language:
          posts.append(line['message'])
        for j in line['comments']:
          if j['language']==language:
            comments.append(j['message'])
      return posts, comments
    
    def removeSpecialChar(posts):
      import re
      def remov(p):
        l=re.sub(' {2,}',' ',re.sub('[^ـابتةثجحخدذرزىسشصضطظعغفقكلمنهويءآأؤإئّّّّّ:ّّّّّ]',' ',re.sub('َ|ً|ُ|ٌ|ِ|ٍ|ْ','',r""+p.strip())))
        myre = re.compile(u'['
        u'\U0001F300-\U0001F64F'
        u'\U0001F680-\U0001F6FF'
        u'\u2600-\u26FF\u2700-\u27BF]+', 
        re.UNICODE)
        return myre.sub('',l)
      return list(map(remov,posts))
    
    def delEmpty(posts,size=2):
      while True:
        p=len(posts)
        for j,i in enumerate(posts):
          if len(i.split(' '))<2:
            #print(i.split(' '))
            del posts[j]
        if p-len(posts)==0:
          return 
    
    def contextAndTarget(posts,k=2):
      import numpy as np
      context = []
      target  = []
      for j,i in enumerate(posts):
        ul = [ k for k in i.split(' ') if len(k)>2]
        for handel in range(len(ul)-1):
          for e in range(k):
            if e+handel<len(ul):
              context.append(ul[handel])
              target.append(ul[e+handel])
      X = []
      X.extend(target)
      X.extend(context)
      Y = []
      Y.extend(context)
      Y.extend(target)
      return X,Y
    

    您的数据集和相应的矩阵有多大?不久前,我试图用numpy构建一个巨大的图像,但它只是在大于80.000 x 80.000的矩阵上崩溃,因为float64超出了范围。如果您有一个多维数组,您可以在其中传递更多的值,可能是75.000x75.000x75.000,但它会消耗大量内存。也许可以考虑通过RAM在本地保存的矩阵上传输值。用于图像的PyVIP(示例)[link]()好的,那么问题出在哪里?
    lines=loadJson('data.json')
    posts,comments=extractSentences(lines,'ARABIC')
    posts=removeSpecialChar(posts)
    delEmpty(posts)
    X,Y=contextAndTarget(posts)
    
    tokenPosts=preprocessing.text.Tokenizer() 
    tokenPosts.fit_on_texts(X)
    vocab_size=len(tokenPosts.word_counts)+1
    
    #just right here it crashes nd the RAM increase suddenly 
    
    xLines,yLines=tokenPosts.texts_to_matrix (X),tokenPosts.texts_to_matrix (Y)