python - __init__() 为参数“填充”获得了多个值
问题描述
def get_model(summary=False, backend='tf'):
""" Return the Keras model of the network
"""
model = Sequential()
if backend == 'tf':
input_shape=(256, 80, 60, 1) # l, h, w, c
else:
input_shape=(1, 256, 80, 60) # c, l, h, w
model.add(Convolution3D(64, 3, 3, 3, activation='relu',
padding='same', name='conv1',
input_shape=input_shape))
model.add(MaxPooling3D(pool_size=(1, 2, 2), strides=(1, 2, 2),
padding='valid', name='pool1'))
# 2nd layer group
model.add(Convolution3D(128, 3, 3, 3, activation='relu',
padding='same', name='conv2'))
model.add(MaxPooling3D(pool_size=(2, 2, 2), strides=(2, 2, 2),
padding='valid', name='pool2'))
+ other layers as well
if __name__ == '__main__':
model = get_model(summary=True,backend='tf')
我正在尝试实现用于视频分类的 c3d 模型。
输入尺寸 = 256 X 80 X 60 X 1
错误显示在主函数中。
我正在尝试使用 C3D 模型进行视频分类。256 帧,80 H,60 W,1 通道(灰度)但遇到这种填充问题(之前使用 tf = 1.14.0,现在 tf = 2.2.0 工作正常)
解决方案
这是函数签名:
tf.keras.layers.Conv3D(
filters, kernel_size, strides=(1, 1, 1), padding='valid',
data_format=None, dilation_rate=(1, 1, 1), groups=1, activation=None,
use_bias=True, kernel_initializer='glorot_uniform',
bias_initializer='zeros', kernel_regularizer=None,
bias_regularizer=None, activity_regularizer=None, kernel_constraint=None,
bias_constraint=None, **kwargs
)
它需要2 个位置参数。
第一个是整数过滤器(64)
第二个是kernel_size
整数或3个整数的元组。
因为您的输入不是(3, 3, 3)
它需要的元组kernel_size=3
,然后将其余部分分配给3, 3
键控参数strides
and padding
,但随后它看到另一个padding=
分配,因此它出错。
底线,请致电:
model.add(Convolution3D(64, (3, 3, 3), activation='relu',
推荐阅读
- android-studio - 如何停止 android studio 自动导入以从 Flutter 的“file://...”开始
- python - 如何在 Django 中连接到现有的 oracle db 表
- ascii - 在 ASCII 表 Python 中输入的符号是什么?
- database - Delphi 在运行时设置 AdoConnection 会导致访问冲突
- javascript - 跟踪状态变化?
- r - 安装 rgdal 时“目标 'projectit.o' 的配方失败”
- python - transform lat long coordinates for a osmnx projected map
- excel - 保存后自动保护表格
- java - 具有单独轴的 Apache-POI 图表中的第二行
- azure - 是否可以在“开发/测试”模式下部署 Azure 资源以便更快地进行测试?