python - “模型”对象没有属性“_name”
问题描述
我正在 Keras 制作一个 CNN。但是我在制作 Keras 模型时遇到了问题。这是我的代码:
x = Input(shape=(256,256,1))
for i in range(16):
u = int(16 * 2 ** (i//4))
x = BatchNormalization()(x)
x1 = Conv2D(u, kernel_size=(1,1), strides=(1,1), activation='relu')(x)
x1 = MaxPooling2D(pool_size=(3,3), strides=(1,1))(x1)
x2 = Conv2D(u, kernel_size=(2,2), strides=(1,1), activation='relu')(x)
x2 = MaxPooling2D(pool_size=(2,2), strides=(1,1))(x2)
x3 = Conv2D(u, kernel_size=(3,3), strides=(1,1), activation='relu')(x)
x3 = MaxPooling2D(pool_size=(1,1), strides=(1,1))(x3)
x = multiply([x1, x2, x3])
#x = Dropout(0.45)(x)
x = MaxPooling2D(pool_size=(3,3), strides=(1,1))(x)
out = BatchNormalization()(x)
model = tf.keras.models.Model(inputs=x, outputs=out)
我收到以下错误:
AttributeError Traceback (most recent call last)
<ipython-input-99-630b3ef0b15f> in <module>()
13 x = MaxPooling2D(pool_size=(3,3), strides=(1,1))(x)
14 out = BatchNormalization()(x)
---> 15 model = tf.keras.models.Model(inputs=x, outputs=out)
...
AttributeError: 'Model' object has no attribute '_name'
解决方案
问题是您在将其他张量x
定义为输入张量之后将其分配给其他张量。因此,它不能作为模型的输入,即inputs=x
。要以最少的修改解决此问题,只需x
在将其定义为输入张量后将其存储在另一个变量中:
x = Input(shape=(256,256,1))
inp = x
# the rest is the same...
model = tf.keras.models.Model(inputs=inp, outputs=out) # pass `inp` as inputs
推荐阅读
- javascript - 浏览器如何区分刷新和标签/浏览器关闭?[2020]
- c++ - 有没有办法使用指定类型作为变量模板类型?
- asp.net-mvc - HTTP 413 - 请求实体太大备忘单
- javascript - 如何在公会中踢所有人?
- javascript - 如何检查 JavaScript 对象是否彼此不同
- azure - 如何将哈希表查询结果输出到 Out-GridView?
- wordpress - 如何在 cpanel 中安装免费 ssl
- java - Azure 文件共享 SAS 令牌签名未按预期生成,如何为文件对象生成签名以匹配门户中生成的签名?
- javascript - 为什么使用 discord.js v12 向玩家发送消息时会出错?
- azure - 如何使用图形 api 知道当前登录的用户是否是租户管理员