当前位置: 首页 > 知识库问答 >
问题:

使用Java API实现维度0的切片索引0越界

茅曾琪
2023-03-14
import base64
import numpy as np
import tensorflow as tf
​
​
fn_load_image = lambda filename: np.array([base64.urlsafe_b64encode(open(filename, "rb").read())])
filename='test.jpg'
with tf.Session() as sess:
    loaded = tf.saved_model.loader.load(sess, ['serve'], 'tools/base64_model/1')
    image = fn_load_image(filename)
    p = sess.run('predictions:0', feed_dict={"input:0": image})
    print(p)
    // load the model Bundle
    try (SavedModelBundle b = SavedModelBundle.load("tools/base64_model/1",
            "serve")) {

        // create the session from the Bundle
        Session sess = b.session();

        // base64 representation of JPG
        byte[] content = IOUtils.toByteArray(new FileInputStream(new File((args[0]))));

        String encodedString = Base64.getUrlEncoder().encodeToString(content);

        Tensor t = Tensors.create(encodedString);

        // run the model and get the classification
        final List<Tensor<?>> result = sess.runner().feed("input", 0, t).fetch("predictions", 0).run();

        // print out the result.
        System.out.println(result);
    }

这应该是等价的,即我发送一个图像的base64表示给一个模型,我得到了一个异常

线程“main”java.lang.IllegalArgumentException中的异常:维度0的切片索引0越界。[[{{node map/strided_slice}}]]在org.tensorflow.session.run(本机方法)在org.tensorflow.session.access$100(Session.java:48)在org.tensorflow.session$runner.runhelper(Session.java:326)在org.tensorflow.session$runner.java:276),在com.stolencamerafinder.storm.crawler.bolt.encryments.hellotensorflow.main(

张量应该有不同的内容吗?以下是saved_model_cli告诉我的模型。

MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs:

signature_def['serving_default']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['inputs'] tensor_info:
        dtype: DT_STRING
        shape: (-1)
        name: input:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['outputs'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 2)
        name: predictions:0
  Method name is: tensorflow/serving/predict

共有1个答案

姚航
2023-03-14

您的模型期望输入张量为1级,而您提供的张量为0级。

这一行产生一个可变长度的标量张量(即dt_string)。

Tensor t = Tensors.create(encodedString);

但是,预期的张量是秩为1的,从这里的形状(-1)中可以看到,这意味着它预期的是一个由不同数量的元素组成的向量。

The given SavedModel SignatureDef contains the following input(s):
    inputs['inputs'] tensor_info:
        dtype: DT_STRING
        shape: (-1)
        name: input:0
// base64 representation of JPG
byte[] content = IOUtils.toByteArray(new FileInputStream(new File((args[0]))));
byte[] encodedBytes = Base64.getUrlEncoder().encode(content);
Tensor t = Tensors.create(new byte[][]{ encodedBytes });
...
 类似资料:
  • 下面是我的代码,为视频序列创建标题 维度1的切片索引64越界。[OP:stridedslice]名称:caption_generator_5/strided_slice/ 我的输入是一个视频特性“.npy”文件,包含(64,512)个特性

  • D3库中所有函数都在“d3”命名空间内。 D3 使用语义版本命名。 你可以使用“d3.version”查看D3的最新版本 D3 API总览 行为 - 可重用的交互行为。 核心 - 包括选择器,过渡,数据处理,本地化,颜色等。 地理 - 球面坐标,经纬度运算。 几何 - 提供绘制2D几何图形的实用工具。 布局 - 推导定位元素的辅助数据。 比例尺 - 数据编码和视觉编码之间转换。 可缩放矢量图形 -

  • 我使用的是一个3D数组,下面的代码是我得到的数组索引超出界限的错误,下面是相同的代码:- 获取以下错误:- 线程“main”Java.lang.ArrayIndexOutOfBoundsException中出现异常:索引0超出了Array2d.TugasArray3.Main(TugasArray3.:27)得分Mid Test1 Ke-1

  • 我试图从我的sqlite数据库中获取一行。当我运行这行代码时:- 我得到以下错误:- android.database.CursorIndexOutOfBoundsException:请求索引0,大小为0 有人能帮我解决这个问题吗?感谢任何帮助或建议。谢谢你。

  • 试图找出0长度数组和切片在Golang中的行为。提出了两段代码(我在某处找到了代码,并对其进行了一些修改以处理此问题) https://play.golang.org/p/ew2YYgvpGC https://play.golang.org/p/jm2p6L6WCG 我从网站上了解到nil数组([]int(nil))的指针值为nil,所以我决定测试一下。果然,就是这样。我只是对制作和切片数组感到困

  • 我得到错误java.lang.IndexOutOfBoundsException:index:0,size:0。