【发布时间】:2017-05-05 13:15:52
【问题描述】:
如何在不指定初始输入形状的情况下将 Keras 张量从形状 (1,1,10) 重塑为形状 (10)? 使用 Flatten()(作为命令)给出
<tf.Tensor 'flatten_11/Reshape:0' shape=(?, ?) dtype=float32>
作为输出 并在模型中使用时出错
model = Sequential()
model.add(Convolution1D(filters=self.nb_filters,
kernel_size=self.n_gram,
padding='valid',
activation='relu',
input_shape=(None,3*self.vecsize)))
model.add(MaxPooling1D(pool_size=3*self.vecsize-self.n_gram+1))
model.add(Flatten())
model.add(Dense(num_categories, activation='softmax'))
它说: “Flatten”的输入形状未完全定义(得到 (None, 10)。确保将完整的“input_shape”或“batch_input_shape”参数传递给模型的第一层。
初始输入形状是1*任意维度*vecsize,我强烈不想事先指定任意维度。
使用 Flatten((1,1,10)) 而不是 Flatten() 也会产生错误:
TypeError: __init__() 接受 1 个位置参数,但给出了 2 个
那么我应该怎么做才能让它工作呢?
【问题讨论】:
-
根据给出的消息,听起来您的输出
(None,10)已经完全符合Dense所需的形状。似乎不需要重塑。
标签: python python-3.x keras