Python Google Cloud ML模型版本创建错误
我试图在Google Cloud ML上部署一个简单的模型,该模型是使用tensorflow和keras构建的。这是我的建模代码Python Google Cloud ML模型版本创建错误,python,tensorflow,keras,google-cloud-platform,Python,Tensorflow,Keras,Google Cloud Platform,我试图在Google Cloud ML上部署一个简单的模型,该模型是使用tensorflow和keras构建的。这是我的建模代码 from keras.optimizers import adam # define the keras model model = Sequential() model.add(Dense(12, input_dim=14, activation='relu')) model.add(Dense(14, activation='relu')) model.add(D
from keras.optimizers import adam
# define the keras model
model = Sequential()
model.add(Dense(12, input_dim=14, activation='relu'))
model.add(Dense(14, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# compile the keras model
opt = adam(lr=0.001, decay=1e-6)
model.compile(loss='binary_crossentropy', optimizer=opt, metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(X, Y, epochs=1, batch_size=10)
# evaluate the keras model
_, accuracy = model.evaluate(X, Y)
print('Accuracy: %.2f' % (accuracy*100))
我还创建了一个自定义预测文件
%%writefile model_prediction.py
import os
import pickle
import numpy as np
class CustomModelPrediction(object):
def __init__(self, model, processor):
self._model = model
self._processor = processor
def _postprocess(self, predictions):
labels = ['lbl1', 'lbl2']
return [
{
"label":labels[int(np.round(prediction))],
"score":float(np.round(prediction,4))
} for prediction in predictions]
def predict(self, instances, **kwargs):
preprocessed_data = np.array(self._processor.transform(instances))
predictions = self._model.predict(preprocessed_data)
labels = self._postprocess(predictions)
return labels
@classmethod
def from_path(cls, model_dir):
import tensorflow.keras as keras
model = keras.models.load_model(
os.path.join(model_dir,'keras_saved_model.h5'))
with open(os.path.join(model_dir, 'processor_state.pkl'), 'rb') as f:
processor = pickle.load(f)
return cls(model, processor)
设置这些参数
MODEL_NAME='keras_test'
VERSION_NAME='v1'
RUNTIME_VERSION='1.13'
REGION='europe-west1'
当我尝试创建一个版本时
!gcloud beta ai-platform versions create {VERSION_NAME} \
--model {MODEL_NAME} \
--origin gs://{BUCKET}/{MODEL_DIR} \
--python-version 3.5 \
--runtime-version {RUNTIME_VERSION} \
--package-uris gs://{BUCKET}/{PACKAGES_DIR}/classifier_test-0.1.tar.gz \
--prediction-class=model_prediction.CustomModelPrediction
我得到以下错误
Create Version failed. Bad model detected with error: "Failed to load model: Unexpected error when loading the model: Unexpected keyword argument passed to optimizer: learning_rate (Error code: 0)
然而,预测类似乎在我的本地机器上工作得很好
我哪里出错了?您是否可能混合了tf和keras的导入,正如您提到的,这是一个tensorflow模型。。。如果您使用tf.keras.optimizers.AdamI无法复制该问题,会发生什么情况?您如何使用keras或tf.keras保存您的模型?另外,您在本地环境中使用的是什么版本?因此,我的模型是
model=tf.keras.models.model(model\u输入,model\u输出)
。也在做!sudo pip安装keras--升级
解决了此错误。但它开始出现新的错误:创建版本(这可能需要几分钟)…失败。错误:(gcloud.beta.ai platform.versions.create)创建版本失败。检测到错误的模型:“加载模型失败:加载模型时出现意外错误:('Unrecogned keyword arguments:',dict_keys(['ragged']))(错误代码:0)”
另外@PaddypoEye您可以尝试复制此模型。我发现问题也发生在这里,你是否可能混合了tf和keras的进口,正如你提到的,这是一个tensorflow模型。。。如果您使用tf.keras.optimizers.AdamI无法复制该问题,会发生什么情况?您如何使用keras或tf.keras保存您的模型?另外,您在本地环境中使用的是什么版本?因此,我的模型是model=tf.keras.models.model(model\u输入,model\u输出)
。也在做!sudo pip安装keras--升级
解决了此错误。但它开始出现新的错误:创建版本(这可能需要几分钟)…失败。错误:(gcloud.beta.ai platform.versions.create)创建版本失败。检测到错误的模型:“加载模型失败:加载模型时出现意外错误:('Unrecogned keyword arguments:',dict_keys(['ragged']))(错误代码:0)”
另外@PaddypoEye您可以尝试复制此模型。我发现这个问题也发生在这里