tensorflow - TypeError: __init__() 为参数 'kernel_size' 获得了多个值
问题描述
执行程序时出现以下错误...
def conv2d(x, output_dim, k_size=5, stride=2, stddev=0.02, name="conv2d"):
#conv = tf.keras.layers.Conv2D(x, output_dim, kernel_size=k_size,
strides=[stride, stride], padding="SAME",
kernel_initializer=init(stddev=0.02), name=name)
conv = tf.compat.v1.layers.Conv2D(x, output_dim, kernel_size=k_size,
strides=[stride, stride], padding='SAME',
kernel_initializer=init(stddev=0.02), name=name)
错误
文件“/nfs/s-iibi54/users/skuanar/Downloads/VAE-GAN-Autoencoding-Beyond-Pixels-Using-a-Similarity-Metric-master/vaegan.py”,第 20 行,在 conv2d conv = tf.compat .v1.layers.Conv2D(x, output_dim, kernel_size=k_size, strides=[stride, stride], padding='SAME', kernel_initializer=init(stddev=0.02), name=name) TypeError: init() got multiple values对于参数'kernel_size'
解决方案
您正在传递x
给图层的__init__
方法。这不是 Keras 层的工作方式。
您应该通过x
调用已经存在的层来传递:
def conv2d(x, output_dim, k_size=5, stride=2, stddev=0.02, name="conv2d"):
#conv = tf.keras.layers.Conv2D(output_dim, kernel_size=k_size,
strides=[stride, stride], padding="SAME",
kernel_initializer=init(stddev=0.02), name=name)(x)
conv_output = tf.compat.v1.layers.Conv2D(output_dim, kernel_size=k_size,
strides=[stride, stride], padding='SAME',
kernel_initializer=init(stddev=0.02), name=name)(x)
假设x
是您的输入张量。
这与以下内容相同:
conv_layer = Conv2D(output_dim, kernel_size=k_size,
strides=[stride, stride], padding="SAME",
kernel_initializer=init(stddev=0.02), name=name)
conv_layer_output_tensor = conv_layer(x)
推荐阅读
- javascript - 如何在php中只允许png文件类型
- javascript - 如何在 C# 代码块中使用 javascript 变量
- elasticsearch - 如何在 Elasticsearch 7 NEST 7 中设置“max_result_window”
- c++ - 传递 unique_ptr 时调试和发布配置的移动不一致?
- javascript - 如何使用 Javascript 格式化数字?
- javascript - JavaScript 对象动态检索值
- php - 自定义帖子类型内容未显示在单页上
- datetime - 如何将儒略日期转换为雪花中的时间戳
- xfs - 我如何知道自动提款机交易是成功还是失败?
- docker - Light4J Oauth2 docker-compose 错误提示找不到指定的 Dockerfile