标签: google-cloud-ml

Tensorflow失败,"无法从Feed中获取元素作为字节".在尝试恢复检查点时

我正在使用Tensorflow r0.12.

我在本地使用google-cloud-ml来运行2个不同的培训工作.在第一份工作中,我找到了我的变量的良好初始值.我将它们存储在V2检查点中.

当我尝试恢复我的变量以便在第二个作业中使用它们时:

import tensorflow as tf

sess = tf.Session()
new_saver = tf.train.import_meta_graph('../variables_pred/model.ckpt-10151.meta', clear_devices=True)
new_saver.restore(sess, tf.train.latest_checkpoint('../variables_pred/'))
all_vars = tf.trainable_variables()
for v in all_vars:
    print(v.name)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

tensorflow.python.framework.errors_impl.InternalError: Unable to get element from the feed as bytes.
Run Code Online (Sandbox Code Playgroud)

在第一个作业中使用这些行创建检查点:

saver = tf.train.Saver()
saver.export_meta_graph(filename=os.path.join(output_dir, 'export.meta'))
saver.save(sess, os.path.join(output_dir, 'export'), write_meta_graph=False)
Run Code Online (Sandbox Code Playgroud)

根据这个答案,它可能来自缺少元数据文件,但我正在加载元数据文件.

PS:我使用这个论点clear_devices=True是因为在google-cloud-ml上发布产生的设备规格非常错综复杂,我不需要一定得到同样的调度.

python tensorflow google-cloud-ml

9
推荐指数
1
解决办法
9077
查看次数

gcloud ml-engine local predict RuntimeError:.pyc文件中的错误幻数

我的目标是在谷歌云ml引擎上做出预测.

我按照谷歌的指示在linux ubuntu 16.04LT上安装了gcloud sdk .我已经有一台机器学习训练模型.我使用python版本anaconda python 3.5.

我跑:

gcloud ml-engine local predict --model-dir={MY_MODEL_DIR} --json-instances={MY_INPUT_JSON_INSTANCE}
Run Code Online (Sandbox Code Playgroud)

我收到了消息:错误:

(gcloud.ml-engine.local.predict)RuntimeError:.pyc文件中的错误幻数

下面是所有堆栈跟踪:

DEBUG: (gcloud.ml-engine.local.predict) RuntimeError: Bad magic number in .pyc file
Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/cli.py", line 797, in Execute
    resources = calliope_command.Run(cli=self, args=args)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/calliope/backend.py", line 757, in Run
    resources = command_instance.Run(args)
  File "/usr/lib/google-cloud-sdk/lib/surface/ml_engine/local/predict.py", line 65, in Run
    args.text_instances)
  File "/usr/lib/google-cloud-sdk/lib/googlecloudsdk/command_lib/ml_engine/local_utils.py", line 89, in RunPredict
    raise LocalPredictRuntimeError(err)
LocalPredictRuntimeError: RuntimeError: Bad magic number in .pyc file
ERROR: (gcloud.ml-engine.local.predict) RuntimeError: Bad …
Run Code Online (Sandbox Code Playgroud)

python google-cloud-platform gcloud tensorflow google-cloud-ml

9
推荐指数
2
解决办法
1655
查看次数

当Json请求包含"_bytes"或"b64"时,google cloud ml-engine会做什么?

谷歌云文档(请参阅预测输入中的二进制数据)指出:

必须将编码的字符串格式化为JSON对象,并使用名为b64的单个键.以下Python示例使用base64库对原始JPEG数据的缓冲区进行编码以生成实例:

{"image_bytes":{"b64": base64.b64encode(jpeg_data)}}
Run Code Online (Sandbox Code Playgroud)

在TensorFlow模型代码中,您必须为输入和输出张量命名别名,以便它们以'_bytes'结尾.

我想了解更多有关此过程如何在Google云端运行的信息.

  • ml-engine是否会自动将"b64"字符串之后的任何内容解码为字节数据?

  • 当请求具有此嵌套结构时,它是否仅将"b64"部分传递给服务输入函数并删除"image_bytes"键?

  • 每个请求是单独传递给服务输入函数还是已经批处理?

  • 我们是否在服务输入函数返回的ServingInputReceiver中定义输入输出别名?

我发现无法创建服务输入函数,该函数使用此嵌套结构来定义要素占位符.我只在我的中使用"b64"而且我不确定gcloud ml-engine在接收请求时会做什么.

另外,当在本地使用预测时gcloud ml-engine local predict,发送具有嵌套结构的请求失败,(意外的密钥image_bytes,因为它没有在服务输入函数中定义).但是在预测使用时gcloud ml-engine predict,即使服务输入函数不包含对"image_bytes"的引用,使用嵌套结构发送请求也能正常工作.当忽略"image_bytes"并传入"b64"时,gcloud预测也有效.

服务输入功能的示例

def serving_input_fn():
    feature_placeholders = {'b64': tf.placeholder(dtype=tf.string,
                                                  shape=[None],
                                                  name='source')}
    single_image = tf.decode_raw(feature_placeholders['b64'], tf.float32)
    inputs = {'image': single_image}
    return tf.estimator.export.ServingInputReceiver(inputs, feature_placeholders)
Run Code Online (Sandbox Code Playgroud)

我使用图像给出了示例,但我假设同样适用于作为字节和base64编码发送的所有类型的数据.

有很多stackoverflow问题,其中包含对包含"_bytes"信息片段的需求的引用,但我觉得如果有人可以详细解释一下这些内容会有什么用,那么我就不会如此受欢迎格式化请求时错过.

Stackoverflow关于此主题的问题

gcloud tensorflow-serving google-cloud-ml tensorflow-estimator

9
推荐指数
1
解决办法
943
查看次数

如何获得TensorFlow/Keras模型,该模型将图像作为输入来提供Cloud ML Engine上的预测?

有多种问题(例如:1,2,3,4,5,6,等)试图解决如何服务于在云ML引擎TensorFlow/Keras模型的预测处理时的图像数据的问题.

不幸的是,有些答案是过时的,没有一个全面解决问题.这篇文章的目的是提供一个全面的,最新的答案,以供将来参考.

google-cloud-ml

9
推荐指数
1
解决办法
2220
查看次数

如何远程连接到 GCP ML Engine/AWS Sagemaker 托管笔记本?

GCP 终于发布了托管 Jupyter 笔记本。我希望能够通过连接到笔记本电脑在本地进行交互。IE。我使用 PyCharm 通过传递其 URL 和令牌参数来连接到外部配置的 jupyter notebbok 服务器。

问题也适用于 AWS Sagemaker 笔记本。

amazon-web-services google-cloud-platform google-cloud-ml amazon-sagemaker gcp-ai-platform-notebook

9
推荐指数
2
解决办法
4340
查看次数

MonitoredTrainingSession每次运行写入多个元图事件

使用tf.train.MonitoredTrainingSession它编写检查点文件时会以某种方式写入多个元图.我究竟做错了什么?

我把它剥离到下面的代码:

import tensorflow as tf
global_step = tf.Variable(0, dtype=tf.int32, trainable=False, name="global_step")
train = tf.assign(global_step, global_step + 1)
saver = tf.train.Saver()
hooks = [(tf.train.CheckpointSaverHook(checkpoint_dir=output_path + "test1/ckpt/",
                                          save_steps = 10,
                                          saver = saver))]

with tf.train.MonitoredTrainingSession(master = '',
                                       is_chief = True,
                                       checkpoint_dir = None,
                                       hooks = hooks,
                                       save_checkpoint_secs = None,
                                       save_summaries_steps = None,
                                       save_summaries_secs = None) as mon_sess:
    for i in range(30):
        if mon_sess.should_stop():
            break
        try:
            gs, _ = mon_sess.run([global_step, train])
            print(gs)
        except (tf.errors.OutOfRangeError,tf.errors.CancelledError) as e:
            break
        finally:
            pass
Run Code Online (Sandbox Code Playgroud)

运行此操作将提供重复的元图,如张量板警告所示: …

python tensorflow google-cloud-ml

8
推荐指数
1
解决办法
1541
查看次数

解析csv时升级到tf.dataset无法正常工作

我有一个GCMLE实验,我正在尝试升级我input_fn以使用新tf.data功能.我已根据此示例创建了以下input_fn

def input_fn(...):
    dataset = tf.data.Dataset.list_files(filenames).shuffle(num_shards) # shuffle up the list of input files
    dataset = dataset.interleave(lambda filename: # mix together records from cycle_length number of shards
                tf.data.TextLineDataset(filename).skip(1).map(lambda row: parse_csv(row, hparams)), cycle_length=5) 
    if shuffle:
      dataset = dataset.shuffle(buffer_size = 10000)
    dataset = dataset.repeat(num_epochs)
    dataset = dataset.batch(batch_size)
    iterator = dataset.make_one_shot_iterator()
    features = iterator.get_next()

    labels = features.pop(LABEL_COLUMN)

    return features, labels
Run Code Online (Sandbox Code Playgroud)

parse_csv和我之前使用的相同,但目前还没有.我可以解决一些问题,但我不完全理解为什么我遇到这些问题.这是我的parse_csv()函数的开始

def parse_csv(..):
    columns = tf.decode_csv(rows, record_defaults=CSV_COLUMN_DEFAULTS)
    raw_features = dict(zip(FIELDNAMES, columns))

    words = …
Run Code Online (Sandbox Code Playgroud)

tensorflow google-cloud-ml tensorflow-datasets

8
推荐指数
1
解决办法
2689
查看次数

Cloud ML Service帐户无法访问云存储,并且未在IAM和管理面板中列出

使用该命令创建ML Engine Model的新版本时

gcloud ml-engine versions create 'v1' --model=model_name --origin=gs://path_to_model/1/ --runtime-version=1.4
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR: (gcloud.ml-engine.versions.create) FAILED_PRECONDITION: Field: version.deployment_uri Error: Read permissions are required for Cloud ML service account cloud-ml-service@**********.iam.gserviceaccount.com to the model file gs://path_to_model/1/saved_model.pb.
- '@type': type.googleapis.com/google.rpc.BadRequest
  fieldViolations:
  - description: Read permissions are required for Cloud ML service account cloud-ml-service@**********.iam.gserviceaccount.com to the model file gs://path_to_model/1/saved_model.pb.
  field: version.deployment_uri
Run Code Online (Sandbox Code Playgroud)

此服务帐户未在IAM和管理面板中列出,并且不属于我的项目,因此我不想手动为此帐户授予权限.

有没有其他人也经历过这个?关于我应该做什么的任何建议?

附加信息:

google-cloud-platform google-cloud-ml

8
推荐指数
1
解决办法
767
查看次数

Google Cloud ML-engine scikit-learn预测概率'predict_proba()'

Google Cloud ML-engine支持部署scikit-learn Pipeline对象的功能.例如,文本分类Pipeline可能如下所示,

classifier = Pipeline([
('vect', CountVectorizer()), 
('clf', naive_bayes.MultinomialNB())])
Run Code Online (Sandbox Code Playgroud)

分类器可以训练,

classifier.fit(train_x, train_y)
Run Code Online (Sandbox Code Playgroud)

然后可以将分类器上传到Google云端存储,

model = 'model.joblib'
joblib.dump(classifier, model)
model_remote_path = os.path.join('gs://', bucket_name, datetime.datetime.now().strftime('model_%Y%m%d_%H%M%S'), model)
subprocess.check_call(['gsutil', 'cp', model, model_remote_path], stderr=sys.stdout)
Run Code Online (Sandbox Code Playgroud)

然后,Model并且Version可以被创建,或者通过谷歌云端控制台,或编程,连接'model.joblib'文件中Version.

然后,可以通过调用已部署的模型predict端点将此分类器用于预测新数据,

ml = discovery.build('ml','v1')
project_id = 'projects/{}/models/{}'.format(project_name, model_name)
if version_name is not None:
    project_id += '/versions/{}'.format(version_name)
request_dict = {'instances':['Test data']}
ml_request = ml.projects().predict(name=project_id, body=request_dict).execute()
Run Code Online (Sandbox Code Playgroud)

Google Cloud ML引擎调用predict分类器的功能并返回预测的类.但是,我希望能够返回置信度分数.通常这可以通过调用predict_proba …

python scikit-learn google-cloud-platform google-cloud-ml

8
推荐指数
1
解决办法
466
查看次数

如何让 Google Cloud AI Platform 在训练期间检测 `tf.summary.scalar` 调用?

(注意:我也在这里问过这个问题)

问题

我一直在尝试让 Google Cloud 的 AI 平台显示在 AI 平台上训练的 Keras 模型的准确性。我配置了超参数调整,hptuning_config.yaml它工作正常。但是,我无法让 AI 平台tf.summary.scalar在训练期间接听电话。

文档

我一直在关注以下文档页面:

1.超参数调优概述

2.使用超参数调优

根据[1]

AI Platform Training 如何获取您的指标 您可能会注意到,本文档中没有关于将您的超参数指标传递给 AI Platform Training 训练服务的说明。这是因为该服务会监控由您的训练应用程序生成的 TensorFlow 摘要事件并检索指标。”

根据[2],生成此类 Tensorflow 摘要事件的一种方法是创建一个回调类,如下所示:

class MyMetricCallback(tf.keras.callbacks.Callback):

    def on_epoch_end(self, epoch, logs=None):
        tf.summary.scalar('metric1', logs['RootMeanSquaredError'], epoch)
Run Code Online (Sandbox Code Playgroud)

我的代码

所以在我的代码中我包括:

# hptuning_config.yaml

trainingInput:
  hyperparameters:
    goal: MAXIMIZE
    maxTrials: 4
    maxParallelTrials: 2
    hyperparameterMetricTag: val_accuracy
    params:
    - parameterName: learning_rate
      type: DOUBLE
      minValue: 0.001
      maxValue: 0.01
      scaleType: UNIT_LOG_SCALE …
Run Code Online (Sandbox Code Playgroud)

google-cloud-platform keras tensorflow google-cloud-ml gcp-ai-platform-training

7
推荐指数
1
解决办法
356
查看次数