【问题标题】:google colaboratory, weight download (export saved models)google colaboratory,权重下载(导出保存的模型)
【发布时间】:2018-08-02 02:40:49
【问题描述】:

我使用 Keras 库创建了一个模型,并将模型保存为 .json 及其权重,扩展名为 .h5。如何将其下载到我的本地计算机上?

为了保存我遵循的模型link

【问题讨论】:

    标签: python-3.x google-colaboratory


    【解决方案1】:

    我只是将模型拖放到目录文件夹中。它就在我的谷歌驱动器中。

    【讨论】:

      【解决方案2】:

      下载到本地系统:

      from google.colab import files
      
      #For model json
      model_json = model.to_json()
      with open("model1.json","w") as json_file:
           json_file.write(model_json)
      files.download("model1.json")
      
      #For weights
      model.save('weights.h5')
      files.download('weights.h5')
      

      【讨论】:

        【解决方案3】:

        这对我有用! 使用 PyDrive API

        !pip install -U -q PyDrive
        from pydrive.auth import GoogleAuth
        from pydrive.drive import GoogleDrive
        from google.colab import auth
        from oauth2client.client import GoogleCredentials
        
        # 1. Authenticate and create the PyDrive client.
        auth.authenticate_user()
        gauth = GoogleAuth()
        gauth.credentials = GoogleCredentials.get_application_default()
        drive = GoogleDrive(gauth)
        
        # 2. Save Keras Model or weights on google drive
        
        # create on Colab directory
        model.save('model.h5')    
        model_file = drive.CreateFile({'title' : 'model.h5'})
        model_file.SetContentFile('model.h5')
        model_file.Upload()
        
        # download to google drive
        drive.CreateFile({'id': model_file.get('id')})
        

        权重相同

        model.save_weights('model_weights.h5')
        weights_file = drive.CreateFile({'title' : 'model_weights.h5'})
        weights_file.SetContentFile('model_weights.h5')
        weights_file.Upload()
        drive.CreateFile({'id': weights_file.get('id')})
        

        现在,检查你的谷歌驱动器。

        下次运行时,尝试重新加载权重

        # 3. reload weights from google drive into the model
        
        # use (get shareable link) to get file id
        last_weight_file = drive.CreateFile({'id': '1sj...'}) 
        last_weight_file.GetContentFile('last_weights.mat')
        model.load_weights('last_weights.mat')
        

        一种更好的新方法(更新后)...忘记以前的方法(也有效)

        # Load the Drive helper and mount
        from google.colab import drive
        drive.mount('/content/drive')
        

        系统将提示您进行授权 在浏览器中转到此 URL:类似于: accounts.google.com/o/oauth2/auth?client_id=.....

        从链接中获取授权码,在空格处粘贴你的授权码

        那么就可以正常使用驱动器作为自己的磁盘了

        直接保存权重甚至整个模型

        model.save_weights('my_model_weights.h5')
        model.save('my_model.h5')
        

        甚至更好的方法是使用回调,它会自动检查每个时期的模型是否比保存的最佳模型更好,并保存迄今为止验证损失最好的模型。

        my_callbacks = [
            EarlyStopping(patience=4, verbose=1),
            ReduceLROnPlateau(factor=0.1, patience=3, min_lr=0.00001, verbose=1),
            ModelCheckpoint(filepath = filePath + 'my_model.h5', 
            verbose=1, save_best_only=True, save_weights_only=False) 
            ]
        

        并在model.fit中使用回调

        model.fit_generator(generator = train_generator,  
                            epochs = 10,
                            verbose = 1,
                            validation_data = vald_generator,
                            callbacks = my_callbacks)
        

        您可以稍后加载它,即使使用以前的用户定义的损失函数

        from keras.models import load_model
        model = load_model(filePath + 'my_model.h5', 
                custom_objects={'loss':balanced_cross_entropy(0.20)})
        

        【讨论】:

          【解决方案4】:

          只需使用 model.save()。下面我创建了一个变量来存储模型的名称,然后我用 model.save() 保存它。我使用了 google collab,但它应该适用于其他 s enter image description here

          【讨论】:

            【解决方案5】:

            试试这个

            from google.colab import files
            files.download("model.json")
            

            【讨论】:

            • 这似乎适用于小文件。对于超过 300M 的更大文件,在 Chrome 中,它因“错误:[Errno 32] Broken pipe”而失败。有什么想法吗?
            【解决方案6】:

            这是一个对我有用的解决方案:

            设置身份验证 b/w Google Colab 和您的云端硬盘:

            步骤:

            -粘贴如下代码

            -此过程将生成两个 URL 以完成身份验证,您必须在其中复制令牌并粘贴到提供的栏中

            !apt-get install -y -qq software-properties-common python-software-properties module-init-tools
            !add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
            !apt-get update -qq 2>&1 > /dev/null
            !apt-get -y install -qq google-drive-ocamlfuse fuse
            from google.colab import auth
            auth.authenticate_user()
            from oauth2client.client import GoogleCredentials
            creds = GoogleCredentials.get_application_default()
            import getpass
            !google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
            vcode = getpass.getpass()
            !echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
            

            身份验证完成后,使用以下代码建立连接:

            !mkdir -p drive
            !google-drive-ocamlfuse drive
            

            现在查看您的 Google 云端硬盘中的文件列表:

            !ls drive
            

            将 Keras 模型输出保存到 Drive,过程与存储在本地驱动器中完全相同:

            -照常运行 Keras 模型

            一旦模型经过训练,您希望将模型输出(.h5 和 json)存储到您的 Google Drive 的 app 文件夹中:

            model_json = model.to_json()
            with open("drive/app/model.json", "w") as json_file:
                json_file.write(model_json)
            # serialize weights to HDF5
            model.save_weights("drive/app/model_weights.h5")
            print("Saved model to drive")
            

            您将在 Google Drive 的相应文件夹中找到文件,您可以从该文件夹中下载,如下所示:

            【讨论】:

              【解决方案7】:

              files.download 不允许你直接下载大文件。一种解决方法是使用下面的 pydrive sn-p 将您的权重保存在 Google 驱动器上。只需更改 filename.txt 为您的 weights.h5 文件

              # Install the PyDrive wrapper & import libraries.
              # This only needs to be done once in a notebook.
              !pip install -U -q PyDrive
              from pydrive.auth import GoogleAuth
              from pydrive.drive import GoogleDrive
              from google.colab import auth
              from oauth2client.client import GoogleCredentials
              
              # Authenticate and create the PyDrive client.
              # This only needs to be done once in a notebook.
              auth.authenticate_user()
              gauth = GoogleAuth()
              gauth.credentials = GoogleCredentials.get_application_default()
              drive = GoogleDrive(gauth)
              
              # Create & upload a file.
              uploaded = drive.CreateFile({'title': 'filename.csv'})
              uploaded.SetContentFile('filename.csv')
              uploaded.Upload()
              print('Uploaded file with ID {}'.format(uploaded.get('id')))
              

              【讨论】:

                【解决方案8】:

                要将模型下载到本地系统,可以使用以下代码 - 下载json文件:

                model_json = model.to_json()
                with open("model1.json","w") as json_file:
                     json_file.write(model_jason)
                
                files.download("model1.json")
                

                下载权重:

                model.save('weights.h5')
                files.download('weights.h5')
                

                【讨论】:

                • 文件未定义
                【解决方案9】:

                您可以在训练后运行以下内容。

                saver = tf.train.Saver()
                save_path = saver.save(session, "data/dm.ckpt")
                print('done saving at',save_path)
                

                然后检查保存ckpt文件的位置。

                import os
                print( os.getcwd() )
                print( os.listdir('data') )
                

                终于下载了带权重的文件!

                from google.colab import files
                files.download( "data/dm.ckpt.meta" ) 
                

                【讨论】:

                • save_path = saver.save(sess, "data/dm.ckpt") "session" 已弃用。
                猜你喜欢
                • 2018-08-31
                • 1970-01-01
                • 2018-11-29
                • 2018-07-13
                • 2018-10-31
                • 1970-01-01
                • 2018-08-08
                • 1970-01-01
                • 2018-08-15
                相关资源
                最近更新 更多