Python 在函数Keras模型中使用lambda重塑输入

Python 在函数Keras模型中使用lambda重塑输入,python,tensorflow,keras,neural-network,Python,Tensorflow,Keras,Neural Network,我必须预测视频中说的话 由29帧64x64像素组成的输入视频连接在一个尺寸为64x(29*64)的图像中。 我想通过使用Lambda层重塑输入的形状(64x64x29),将视频输入到我的模型中 以下是我的尝试: import numpy as np import tensorflow as tf from keras import layers, Input def custom_input(in_tensor): out_tensor = np.zeros((64, 64, 29))

我必须预测视频中说的话

由29帧64x64像素组成的输入视频连接在一个尺寸为64x(29*64)的图像中。 我想通过使用Lambda层重塑输入的形状(64x64x29),将视频输入到我的模型中

以下是我的尝试:

import numpy as np
import tensorflow as tf
from keras import layers, Input

def custom_input(in_tensor):
  out_tensor = np.zeros((64, 64, 29))
  for i in range(29):
    out_tensor[:, :, i] = in_tensor[:, i*64: (i+1)*64]
  return tf.TensorSpec.from_tensor(tf.convert_to_tensor(out_tensor))

inputs = Input(shape=(64, 64*29))
inputs_reshaped = layers.Lambda(function=custom_input, output_shape=(64, 64, 29))(inputs)


conv1 = list()
for i in range(29):
  conv_layer = layers.Conv2D(filters=48, kernel_size=(3, 3))(
      tf.reshape(inputs_reshaped[:, :, i],
                 [-1, 64, 64, 1]),
  )
  conv1.append(conv_layer)
conv1_concat = concatenate([x for x in conv1], axis=3)

这会引发以下错误,我似乎无法理解:

TypeError                                 Traceback (most recent call last)
<ipython-input-180-944fb1ac18c3> in <module>()
     10 inputs_reshaped = inputs
     11 
---> 12 inputs_reshaped = layers.Lambda(function=custom_input, output_shape=(64, 64, 29))(inputs)
     13 
     14 conv1 = list()

5 frames
<ipython-input-176-988a5f078103> in custom_input(in_tensor)
      3 
      4   for i in range(29):
----> 5     out_tensor[:, :, i] = in_tensor[:, i*64: (i+1)*64]
      6   return tf.TensorSpec.from_tensor(tf.convert_to_tensor(out_tensor))
      7 

TypeError: __array__() takes 1 positional argument but 2 were given
TypeError回溯(最近一次调用)
在()
10个输入\u整形=输入
11
--->12输入\u整形=层。Lambda(函数=自定义\u输入,输出\u形状=(64,64,29))(输入)
13
14 conv1=列表()
5帧
在自定义输入中(在张量中)
3.
对于范围(29)中的i,为4:
---->5 out_张量[:,:,i]=in_张量[:,i*64:(i+1)*64]
6返回tf.TensorSpec.from_tensor(tf.convert_to_tensor(out_tensor))
7.
TypeError:_数组__()接受1个位置参数,但提供了2个

我对keras模型还很陌生,我不知道我是否采用了wright方法。

你试过重塑TF层吗?