[英]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.