Tensorflow 在具有4维(4D张量)的输入上使用MaxPool1D?

Tensorflow 在具有4维(4D张量)的输入上使用MaxPool1D?,tensorflow,machine-learning,keras,Tensorflow,Machine Learning,Keras,我正在尝试创建一个用于多实例学习的NN体系结构,因此实例实际上是一袋袋的时间序列段。我想在功能(最后一个维度)上执行COnv1D和MaxPool1D,我将输入指定为具有4个维度,这对COnv1D很好,但会引发MaxPool1D错误: n = 6 sample_size = 300 code_size = 50 learning_rate = 0.001 bag_size = None # autoencoder: n_bags X bag_size X n_samples (timesteps

我正在尝试创建一个用于多实例学习的NN体系结构,因此实例实际上是一袋袋的时间序列段。我想在功能(最后一个维度)上执行COnv1D和MaxPool1D,我将输入指定为具有4个维度,这对COnv1D很好,但会引发MaxPool1D错误:

n = 6
sample_size = 300
code_size = 50
learning_rate = 0.001
bag_size = None

# autoencoder: n_bags X bag_size X n_samples (timesteps) X n_measurements
input_window = Input(shape=(bag_size,sample_size, n)) 
x = Conv1D(filters=40, kernel_size=21, activation='relu', padding='valid')(input_window)
x = MaxPooling1D(pool_size=2)(x)
错误是:

ValueError: Input 0 of layer max_pooling1d_4 is incompatible with the layer: expected ndim=3, found ndim=4. Full shape received: [None, None, 280, 40]
据 MaxPool1D仅适用于三维张量。
有解决办法吗?

虽然不清楚您要在哪个轴上进行合并,但您可以使用池大小正确的
MaxPooling2D
,在这种情况下,IIUC将是
(1,2)


您试图在哪个维度上应用池?最后一个?还是最后一个?@AkshaySehgal会随着时间的推移为每一个功能设置。这正好适用于3D张量和1D Conv以及MaxPoolDo,请检查我的答案是否符合您的要求。很高兴为您提供帮助,干杯
from tensorflow.keras import layers, Model

n = 6
sample_size = 300
code_size = 50
learning_rate = 0.001
n_bags= None

# autoencoder: n_bags X n_instances_in_bag X n_samples (timesteps) X n_measurements
input_window = layers.Input(shape=(n_bags,sample_size, n)) 
x = layers.Conv1D(filters=40, kernel_size=21, activation='relu', padding='valid')(input_window)

x = layers.MaxPooling2D(pool_size=(1,2))(x)

model = Model(input_window, x)

model.summary()
Model: "model_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_5 (InputLayer)         [(None, None, 300, 6)]    0         
_________________________________________________________________
conv1d_3 (Conv1D)            (None, None, 280, 40)     5080      
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, None, 140, 40)     0         
=================================================================
Total params: 5,080
Trainable params: 5,080
Non-trainable params: 0
_________________________________________________________________