Python 在函数Keras模型中使用lambda重塑输入
我必须预测视频中说的话 由29帧64x64像素组成的输入视频连接在一个尺寸为64x(29*64)的图像中。 我想通过使用Lambda层重塑输入的形状(64x64x29),将视频输入到我的模型中 以下是我的尝试: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))
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层吗?