Tensor2Tensor(四)

更换tensor2tensor版本(v1.11.0)遇到的问题:
1.No module named 'tensorflow_probability'
    ------------------------------------分析-----------------------------------------------------------
    /tensor2tensor/layers/common_layers.py中新增了import tensorflow_probability as tfp
    从两个版本的比对文件可以搜索到共8处有增加tensorflow_probability这个module
    ###################################解决方案#######################################################
    pip install tensorflow_probability
    ***********************************执行后结果*******************************************************
    ImportError: This version of TensorFlow Probability requires TensorFlow version >= 1.12.0; Detected an installation of version 1.7.0. Please upgrade TensorFlow to proceed.
    ------------------------------------失败原因分析-----------------------------------------------------------
    当前使用的是TensorFlow 1.7.0,需要升级到1.12.0,这是当前TensorFlow最新的版本
    肿么办???升还是不升。。。
    担心由于更新TensorFlow到最新版本,会引发很多其他的问题,这一步跨得太大。。。
    由于需要的batch prediction是tensor2tensor的v 1.5.6,要不先更新到这个版本试试,这样对于版本更换的操作也更加熟练么?

更换tensor2tensor版本(v1.5.6)遇到的问题:
1.LookupError: HParams set transformer_big_single_gpu_batch_size_1600 never registered.
    ------------------------------------分析-----------------------------------------------------------
    木有注册,在哪里注册呢?找一找,找一找。。。好吧,问题来了
    超简单思路:在之前的代码里面用transformer_big_single_gpu_batch_size_1600去全局搜索一下,在tensor2tensor里面的相关代码肯定就是注册喽~~~~哈哈
    全局搜索到的相关信息:
        README.md文件中有写了:在`tensor2tensor/models/transformer.py`中注册新的`hparams_set`: `transformer_big_single_gpu_batch_size_1600`
        tensor2tensor/modles/transformer.py文件中搜到了相关定义:def transformer_big_single_gpu_batch_size_1600():
        其他相关的结果不是tensor2tensor里面,那么应该就是还在原工程中,不需要动喽。。。
    认真看看代码:
        对比了一下两个版本中的transformer.py文件,发现v1.5.6版本中是纯净的木有任何添加代码的,最后一个函数是def transformer_supervised_attention():
        而原工程在该函数后面添加了三个函数,transformer_big_single_gpu_batch_size,transformer_big_single_gpu_batch_size_1600,transformer_base_single_gpu_batch_size_2048
        看了一下三个函数的实现,大同小异,不出意外的话,我们需要的应该只有transformer_big_single_gpu_batch_size_1600,其他两个是用于调参的吧?不管了,先把这一段搬过去吧。
    ###################################解决方案#######################################################
    将原工程中的tensor2tensor相关的问题定义部分代码搬过去,因为我们只是更新tensor2tensor版本,问题定义应该不需要大改。
    @registry.register_hparams
    def transformer_big_single_gpu_batch_size_1600():
        """HParams for transfomer big model on WMT."""
        hparams = transformer_big_single_gpu()
        hparams.batch_size = 1600
        # small vocab 30000: 1600 for single gpu
        hparams.symbol_modality_num_shards = 1
        return hparams
    ***********************************执行后结果*******************************************************
    解决了,棒棒哒~(。≧3≦)ノ⌒☆
2.LookupError: translate_zhen_med_small_vocab not in the set of supported problems:
    ------------------------------------分析-----------------------------------------------------------
    目测又是没有定义的问题,依旧用translate_zhen_med_small_vocab作为关键词全局搜索,可惜只搜索到了README.md文件中有相关内容。在tensor2tensor中没有搜到相关内容。
    why???以全局搜索到的`tensor2tensor/bin/t2t_datagen.py`为线索,看到了在`tensor2tensor/data_generators`下注册新任务`translate_zhen_med.py`相关内容
    再查看translate_zhen_med.py中的相关内容,发现了一个class:TranslateZhenMedSmallVocab。
    在某个帖子中看到过tensor2tensor注册的problem最终会以驼峰命名法,将下划线去掉,生成类名。那么,就把这个文件搬过去喽~~~~~
    ###################################解决方案#######################################################
    将原工程中tensor2tensor/data_generators/translate_zhen_med.py拷贝到新版本的tensor2tensor/data_generators/下。
    ***********************************执行后结果*******************************************************
    LookupError: translate_zhen_med_small_vocab not in the set of supported problems
    ------------------------------------失败原因分析-----------------------------------------------------------
    一毛一样的错误啊。。。why。。。是不是定义了新问题,没有import啊
    README.md中写了:在tensor2tensor/data_generators下注册新任务translate_zhen_med.py,并在all_problems.py中注册
    from tensor2tensor.data_generators import translate_zhen_med
    那就执行这一波操作。。。。
    ***********************************再次执行后结果*******************************************************
    解决了,棒棒哒~(。≧3≦)ノ⌒☆
3.竟然就跑起来了的样子,我的妈呀。。。不敢相信呀。。。但是对比之前的训练日志,感觉差不多呀……难道更换版本这么容易???不管了,先跑吧……
如果正常训练完的话,岂不是可以参照batch prediction的example进行一波操作呀。。。今天的班总算木有白加,哇咔咔……
感觉自己的日志好逗逼呀。。。
        
    
    
 

你可能感兴趣的:(实习)