将卷积层的 4D 张量输出重塑为 5D 张量以馈送到 ConvLSTM2D 层
Reshape a 4D Tensor output of a Convolutional Layer to 5D Tensor to be fed to a ConvLSTM2D layer
我有一个 VGG 预训练模型。我将形状为 (160,120,3) 的图像传递给它,批量大小为 10。批量中的每个帧代表一个时间步长。
我知道 VGG 网络的输出形状为 (10,5,3,512) 因为我已经通过了批量大小 10。但是当我 运行 vggnet.output.shape
我显然得到 (None,5,3,512)
接下来,我想将 VGGnet 的输出提供给 ConvLSTM2D 层。但是为此我想把它转换成 5D 张量。
当我使用 X = tf.keras.layers.Reshape((-1,10,5,3,512))(X)
时,我在训练时遇到错误。
错误是
InvalidArgumentError: Input to reshape is a tensor with 76800 values, but the requested shape has 768000
[[node ds_model/reshape_2/Reshape (defined at <ipython-input-40-4fa9476bf8a0>:1) ]] [Op:__inference_train_function_5897]
Function call stack:
train_function
如何解决这个错误?有什么方法可以将4D张量整形为5D吗??
我想将 (None,5,3,512)
转换为 (None,10,5,3,512)
from tensorflow.keras.layers import Layer
NUM_FRAMES = 16
class ReshapeLayer(Layer):
def call(self,inputs):
nshape = (BATCH_SIZE,NUM_FRAMES) + inputs.shape[1:]
return tf.reshape(inputs,nshape)
inp = Input(shape = (H,W,C))
out = ReshapeLayer()(inp)
以上代码用于将 4D 输入重塑为提供的 5D 输入,4D 输入包含 BATCH_SIZE x NUM_FRAMES x H x W x C
个元素。
BATCH_SIZE
用于模型的 LSTM 部分
我有一个 VGG 预训练模型。我将形状为 (160,120,3) 的图像传递给它,批量大小为 10。批量中的每个帧代表一个时间步长。
我知道 VGG 网络的输出形状为 (10,5,3,512) 因为我已经通过了批量大小 10。但是当我 运行 vggnet.output.shape
我显然得到 (None,5,3,512)
接下来,我想将 VGGnet 的输出提供给 ConvLSTM2D 层。但是为此我想把它转换成 5D 张量。
当我使用 X = tf.keras.layers.Reshape((-1,10,5,3,512))(X)
时,我在训练时遇到错误。
错误是
InvalidArgumentError: Input to reshape is a tensor with 76800 values, but the requested shape has 768000
[[node ds_model/reshape_2/Reshape (defined at <ipython-input-40-4fa9476bf8a0>:1) ]] [Op:__inference_train_function_5897]
Function call stack:
train_function
如何解决这个错误?有什么方法可以将4D张量整形为5D吗??
我想将 (None,5,3,512)
转换为 (None,10,5,3,512)
from tensorflow.keras.layers import Layer
NUM_FRAMES = 16
class ReshapeLayer(Layer):
def call(self,inputs):
nshape = (BATCH_SIZE,NUM_FRAMES) + inputs.shape[1:]
return tf.reshape(inputs,nshape)
inp = Input(shape = (H,W,C))
out = ReshapeLayer()(inp)
以上代码用于将 4D 输入重塑为提供的 5D 输入,4D 输入包含 BATCH_SIZE x NUM_FRAMES x H x W x C
个元素。
BATCH_SIZE
用于模型的 LSTM 部分