Python 处理不同大小的TF输入

Python 处理不同大小的TF输入,python,tensorflow,input,keras,Python,Tensorflow,Input,Keras,我在TF中构建了一个CNN,它接受输入(shape=(10001000,5))。这是因为图像是由5个黑白图像组成的堆栈。我所有的样本都是不同地区的空中拍摄,所以原始图像的大小不一(远远大于1000)。然而,TF要求所有输入都具有相同的预先确定的大小,因此我们决定从所有图像中剪切1000个 这显然会丢失很多有用的信息。我正在寻找可能使网络具有动态输入形状的方法,这样可以拍摄所有原始图像。我在网上找到了多个建议,但我发现每个建议都有问题 为每种图像大小(假设我有两种大小)分别创建一个Input(),

我在TF中构建了一个CNN,它接受
输入(shape=(10001000,5))
。这是因为图像是由5个黑白图像组成的堆栈。我所有的样本都是不同地区的空中拍摄,所以原始图像的大小不一(远远大于1000)。然而,TF要求所有输入都具有相同的预先确定的大小,因此我们决定从所有图像中剪切1000个

这显然会丢失很多有用的信息。我正在寻找可能使网络具有动态输入形状的方法,这样可以拍摄所有原始图像。我在网上找到了多个建议,但我发现每个建议都有问题

  • 为每种图像大小(假设我有两种大小)分别创建一个
    Input()
    ,然后将其卷积成相同的形状张量。问题是,这意味着一个卷积层将不受一半不好的观测值的影响(除非我误解了下面的层是如何工作的)。例如:
  • #a和b是固定的、不同的图像形状
    对于图像输入:
    如果image.shape==a:
    x=输入(形状=a)
    x=conv2d_转置(输出_形状=(1000,1000,5))
    其他:
    y=输入(形状=b)
    y=conv2d_转置(输出_形状=(1000,1000,5))
    
  • 使用急切的执行。这里我找到的所有示例都是针对固定输入形状的,所以我想不出一种方法来使用它来迭代样本并创建不同的输入。我发现了,但询问者自己回答了,我不能说我真的理解我想要的解决方案
  • 在输入之前调整图像的大小。这是一个特别糟糕的主意,因为调整大小会扭曲图像并丢失大量至关重要的空间元素

  • 任何输入(对不起)都将不胜感激。

    有没有理由不采用最大可能大小和零焊盘输入?那家伙在你链接的线索里就是这么做的。有点俗气,但这曾经是NLP中的常见做法,并且可以选择在卷积层中进行。

    我认为这将是太多的零,图像大小根本不相似。