【问题标题】:Loading ".bin" in Theano or TensorFlow在 Theano 或 TensorFlow 中加载“.bin”
【发布时间】:2017-04-10 14:31:03
【问题描述】:

我已经为我的母语下载了一个预训练的 word2vec 模型。 它有一个“news.model.bin”文件,当我解压缩它时,预计会看到一个txt 文件或pickle,但我在其中发现了另一个.bin 文件,其中包含如下混乱状态:

\09\b9\.,-;sdfkf %some really strange symbols and seem to be invalid symbols%

我什至无法复制它,因为我无法正常打开文件——它很重,我的笔记本电脑死了。 问题是:这个示例代码是否可以是 pre-tranes 模型?如果是,我应该如何处理?

附:链接,我从哪里得到模型(模型在页面底部):http://ling.go.mail.ru/dsm/ru/about

【问题讨论】:

标签: python tensorflow theano word2vec


【解决方案1】:

两种解决方案:

  1. 将 .bin 转换为 .txt:Convert word2vec bin file to text
  2. 直接读取.bin如下图。

https://gist.github.com/j314erre/b7c97580a660ead82022625ff7a644d8 包含一些代码来读取 .bin 并将其加载到 TensorFlow 变量中:

    # Initialize all variables
    sess.run(tf.initialize_all_variables())
    # Initialize all variables
    sess.run(tf.initialize_all_variables())
    if FLAGS.word2vec:
        # initial matrix with random uniform
        initW = np.random.uniform(-0.25,0.25,(len(vocab_processor.vocabulary_), FLAGS.embedding_dim))
        # load any vectors from the word2vec
        print("Load word2vec file {}\n".format(FLAGS.word2vec))
        with open(FLAGS.word2vec, "rb") as f:
            header = f.readline()
            vocab_size, layer1_size = map(int, header.split())
            binary_len = np.dtype('float32').itemsize * layer1_size
            for line in xrange(vocab_size):
                word = []
                while True:
                    ch = f.read(1)
                    if ch == ' ':
                        word = ''.join(word)
                        break
                    if ch != '\n':
                        word.append(ch)   
                idx = vocab_processor.vocabulary_.get(word)
                if idx != 0:
                    initW[idx] = np.fromstring(f.read(binary_len), dtype='float32')  
                else:
                    f.read(binary_len)    

     sess.run(cnn.W.assign(initW))

您可以在此text classification example in TensorFlow 中使用此代码。

仅供参考:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多