我正在运行cloudml flowers sample的略微修改版本来对我自己的图像进行分类,我在预处理部分遇到问题。在指向我自己的图像时,似乎无法联系到另一个项目:
返回pywrap_tensorflow.ReadFromStream(self._read_buf,length,status):文件" /usr/lib/python2.7/contextlib.py",第24行,退出 self.gen.next()File" /usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/errors_impl.py" ;,第466行,in raise_exception_on_not_ok_status pywrap_tensorflow.TF_GetCode(status ))UnavailableError:执行HTTP请求时出错(HTTP响应代码0,错误代码51,错误消息' SSL:没有替代证书主题名称与目标主机名匹配' $ BUCKET.com.storage.googleapis.com& #39;')阅读$ BUCKET.com / image.jpg
(我用$ BUCKET替换了实际的存储桶名称。)
我从vm运行脚本,我在requirements.txt文件中安装了所需的软件包:
阿帕奇束[GCP] == 0.6.0
枕== 4.0.0
tensorflow == 1.4.1
到目前为止我尝试/做过的事情:
从存储桶中读取不具有.com名称但仍在另一个项目中时(访问其他项目的计算引擎服务帐户也设置为&# 34;存储对象查看器")抛出类似的错误,只有它现在" PermissionDenied"而不是"不可用"。
使用我的默认gcloud auth我可以在本地运行预处理而没有错误。
python trainer / preprocess.py \ --input_dict" $ DICT_FILE" \ --input_path $ INPUT_PATH_EVAL \ --output_path $ OUTPUT_PATH_EVAL \
我已经查看了解决方案here,只是这是一个较旧版本的张量流,不应该是1.4的问题,如果是这种情况我可能仍然能够到达我不是的常规非域名桶。
那么在运行这个例子的项目之间我是否缺少了什么?
答案 0 :(得分:2)
Google(TensorFlow)API不支持双通配符格式,例如*.*.storage.googleapis.com
。他们只支持一个通配符证书,例如*.storage.googleapis.com
。在您的情况下,当您使用“$ BUCKET.com.storage.googleapis.com”时,证书中会出现多个给定类型的身份(例如,多个DNS名称)。有关详细信息,请参阅{ {3}}。
由于权限问题而引发了权限拒绝错误。因此,在这种情况下,您没有足够的权限访问其他项目的存储桶,但该服务可用。有关详细信息,请参阅RFC standard 和Request Endpoints文件。
最简单的解决方案是通过Google Cloud API将文件复制到Google存储中,然后从中获取图像。