我试图使用LocallyConnected1D
层(而不是Dense
)构建一个自动编码器,但是在理解这两个层类型之间的差异时遇到了很多困难,尤其是在输出维度方面。在
model = Sequential()
model.add(Reshape(input_shape=(input_size,), target_shape=(input_size,1))
model.add(LocallyConnected1D(encoded_size, kernel_size)
model.add(LocallyConnected1D(input_size, kernal_size_2, name="decoded_layer"))
这个模型编译得很好,但是当我去训练它的时候。。。在
^{pr2}$其中x_train
和{
ValueError: Error when checking target: expected decoded_layer to have 3 dimensions, but got array with shape (60000, 784)
进入decoded_layer
的张量的形状是不是应该是(60000,encoded_size
,1)?在
首先,不必将
None
作为输入形状的第一个维度。Keras自动假设还有另一个输入维度,即样本数。在其次,
LocallyConnected1D
需要3D输入。这意味着您的input_shape应该是(int,int)的形式,keras推断出一个形状(None,int,int)例如:
如果数据的形状不正确,则始终可以使用
^{pr2}$Reshape()
层。假设您的输入是(batch_size,50)的形状,因此每个样本都是50个元素的一维向量:相关问题 更多 >
编程相关推荐