繁体   English   中英

如何将 Keras Regressor 模型从 Colab 保存到 Google Drive?

[英]How to save a Keras Regressor model from Colab to Google Drive?

在谷歌驱动器中学习后,我试图保存回归模型。 我最近开始探索机器学习,发现 Colab 很有用,但无法上传模型。 我有本地机器的 python 代码,但我不知道如何将它上传到谷歌驱动器。

编辑:我试图这样做

from google.colab import drive
drive.mount('/content/gdrive')

name  = 'dll_28'
addr = '/content/drive/My Drive/learning/'

但是当我运行代码时,它给出了以下错误

"Transport endpoint is not connected: '/content/drive/My Drive/learning/model_dll_28.json'"
sc_X = MinMaxScaler(feature_range=(-1,1))
sc_y = StandardScaler()

sX_train = sc_X.fit_transform(X_train)
sy_train = sc_y.fit_transform(y_train)
sX_test  = sc_X.transform    (X_test )
sy_test  = sc_y.transform    (y_test )




#==================================================================
#********************  Learning  **********************************
#==================================================================

# Importing the Keras libraries and packages
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras import losses
from tensorflow.keras import optimizers
import tensorflow.keras.initializers as init


# Initialising the ANN
reg = Sequential()
reg.add(Dense(units = 32, kernel_initializer = init.glorot_uniform(), activation = 'relu', input_dim = 6))
reg.add(Dense(units = 64, kernel_initializer = init.glorot_uniform(), activation = 'relu'))
reg.add(Dense(units = 128, kernel_initializer = init.glorot_uniform(), activation = 'relu'))
reg.add(Dense(units = 32, kernel_initializer = init.glorot_uniform(), activation = 'relu'))
reg.add(Dense(units = 2, kernel_initializer = init.glorot_uniform(), activation = 'linear'))

# Compiling the ANN
reg.compile(optimizer = optimizers.Adam(lr=0.001),loss = losses.mse)


# Fitting the ANN to the Training set
reg.fit(sX_train, sy_train, batch_size = 256, epochs = 500)

score = reg.evaluate(sX_test, sy_test, batch_size = 250)
print(score)
#plt.hist(y[:,2]);

#==================================================================
#********************  Saving the regressor  **********************
#==================================================================

import pickle
name  = 'dll_28'
addr = homefolder + '/reg_files/dll_28/'

reg_json=reg.to_json()
with open(addr+'model_'+name+'.json', "w") as json_file:
    json_file.write(reg_json)
reg.save_weights(addr+'reg_'+name+'.h5')  

from sklearn.externals import joblib
joblib.dump(sc_X, addr+'scX_'+name+'.pkl') 
joblib.dump(sc_y, addr+'scY_'+name+'.pkl')
pickle.dump( reg.get_weights(), open( addr+'w8_'+name+'.p', "wb" ) )

如果不使用 Google Drive,您可以使用Google Storage 要与 Google Storage 交互,您可以使用 TensorFlow io utils。 例如: tf.io.gfile.GFile

要在笔记本中设置对 Google Cloud 帐户的访问凭据,您可以使用以下逻辑:

from google.colab import auth

auth.authenticate_user()

默认情况下, tf.keras.Model不支持直接读取或写入gs:// ,因此您有两个选择。 您将其保存在本地,然后通过读取它并使用tf.io.gfile.GFile将其写入 Google Storage 来复制它。 或者,您可以在 keras 库中应用此处实现的修复,但在 tensorflow 版本中尚不可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM