已修复Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`

Posted MarToony|名角

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已修复Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`相关的知识,希望对你有一定的参考价值。

Keras框架

我们需要记住的一件事情是,Dense层要求明确上一层输出的第二维度的值,而不能显示为None。
但是这种“明确”似乎并不能通过在Dense层指定input_shape就可以实现的。

x1_in = Input(shape=(None,))
x2_in = Input(shape=(None,))
x = SelfCreateLayer([x1_in, x2_in])
# 这里的SelfCreateLayer它输入其实是两个shape为(batch,120)的tensor对象。但是因为120是由dataset决定的,因此这里将其设计为None以自适应各个shape的张量。
output = keras.layers.Bidirectional(keras.layers.LSTM(units=128, return_sequences=True))(x)
# 双向LSTM,输出为(None,None,256)
T = SelfCreateLayer2()(output)
# SelfCreateLayer2,输出为(None,None,256)
T = GlobalMaxPooling1D()(T)
# 若是使用flatten/Reshape,则无法进行实验,显示错误:Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`。
# 解决方法就是,使用池化层代替flatten或者reshape。

output = Dense(10, activation="softmax")(T)
model = Model([x1_in, x2_in], output)

正如上面代码所展示的那样:

T = GlobalMaxPooling1D()(T)
# 若是使用flatten/Reshape,则无法进行实验,显示错误:Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`。
# 解决方法就是,使用池化层代替flatten或者reshape。
output = Dense(10, activation="softmax")(T)

这只是一种方案,而且方案的要点其实是两个部分,第一是GlobalMaxPooling1D代替Flatten,第二是input不能指定具体的维度,只能使用None,如果使用具体的值,会产生SelfCreateLayer部分的问题。因为SelfCreateLayer是自己创建的层,因此如果是其他的层,可能不会出现跟我代码中一样的问题。

因此本文只是提供一种解决思路:无论何种原因,使得Dense层的输入张量的第二维度为(none, none, features)时,如果使用Flatten出现了本文题目的问题,那么可以尝试使用池化层API替换解决。

参考文章:Error: ValueError: The last dimension of the inputs to Dense should be defined. Found None

以上是关于已修复Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`的主要内容,如果未能解决你的问题,请参考以下文章

已修复Error: ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`

import pyarrow not working <- error is "ValueError: The pyarrow library is not installed, pl

ValueError: Please move the function into main module body to use migrations

XCODE 出现 The operation couldn't be completed.(LaunchServicesError error 0.)错误修复

如何修复'ValueError:输入张量必须具有等级 4'?

如何修复 ValueError:不支持多类格式