无法在Google Automl上进行预测

时间:2018-08-24 08:07:30

标签: python google-app-engine google-cloud-automl-nl

我训练了一个模型,并希望预测新图像的分数。

现在,我执行以下功能,但返回错误:

google.api_core.exceptions.PermissionDenied: 403 Permission 'automl.models.predict' denied on resource 'projects/project_id/locations/us-central1/models/model_id' (or it may not exist).

我不确定是否是由于位置不正确,即us-central1?什么是gcloud命令要检查?

如何解决这个问题?

非常感谢您。

def get_prediction(content, project_id, model_id):

    prediction_client = automl_v1beta1.PredictionServiceClient()
    name = 'projects/{}/locations/us-central1/models/{}'.format(project_id, model_id)
    payload = {'image': {'image_bytes': content }}
    params = {}
    request = prediction_client.predict(name, payload, params)
    return request  # waits till request is returned

1 个答案:

答案 0 :(得分:1)

通常在未正确认证应用程序时抛出权限错误消息;因此,需要通过使用环境变量来验证您所使用的服务帐户是否具有必需的roles assigned以及provide the credentials to your application或在代码中明确指向您的服务帐户文件。请记住,在会话中设置环境变量值时,每次删除会话时都会重置该值。

此外,如API Tutorial中所述, AutoML Vision 当前需要位置 us-central1 。基于此,您在这方面应该没问题;但是,如果您想获取有关此配置的其他信息,可以看看projects.locations REST方法。

您可以使用以下官方文档示例将路径传递给代码中的服务帐户密钥,以及QuickStart指南,以进一步了解开始所需的配置使用AutoML Vision服务。

namespace Google\Cloud\Samples\Auth;

// Imports the Google Cloud Storage client library.
use Google\Cloud\Storage\StorageClient;

function auth_cloud_explicit($projectId, $serviceAccountPath)
{
    # Explicitly use service account credentials by specifying the private key
    # file.
    $config = [
        'keyFilePath' => $serviceAccountPath,
        'projectId' => $projectId,
    ];
    $storage = new StorageClient($config);

    # Make an authenticated API request (listing storage buckets)
    foreach ($storage->buckets() as $bucket) {
        printf('Bucket: %s' . PHP_EOL, $bucket->name());
    }
}