2017-02-20 73 views
0

我有训练有素的模型的结果,以numpy输出文件中的Flatten图层结尾。 我尝试加载它们并将它们用作密集图层的输入。在顺序Keras模型中将一维数据加载到密集层中

train_data = np.load(open('bottleneck_flat_features_train.npy')) 
train_labels = np.array([0] * (nb_train_samples/2) + [1] * (nb_train_samples/2)) 
# 
validation_data = np.load(open('bottleneck_flat_features_validation.npy')) 
validation_labels = np.array([0] * (nb_validation_samples/2) + [1] * (nb_validation_samples/2)) 
# 
top_m = Sequential() 
top_m.add(Dense(2,input_shape=train_data.shape[1:], activation='sigmoid', name='top_dense1')) 
top_m.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) 
# 
top_m.fit(train_data, train_labels, 
    nb_epoch=nb_epoch, batch_size=my_batch_size, 
    validation_data=(validation_data, validation_labels)) 

但是我得到以下错误消息:

ValueError: Error when checking model target: expected top_dense1 to have 
shape (None, 2) but got array with shape (13, 1) 

我的输入尺寸(16,1536) - 16倍的图像这种有限试运转,1536层的功能。

>>> train_data.shape 
(16, 1536) 

致密层应该期望一维1536长阵列。

>>> train_data.shape[1] 
1536 

我该怎么办? 非常感谢!

+0

什么是train_data.shape? –

+0

好点,我将这些信息添加到我的问题中。 – user2182857

回答

1

我发现我的问题 - 我没有正确定义标签。我已经将模型编译转换为稀疏分类交叉模式。

我当前的代码是

def train_top_model(): 
    train_data = np.load(open('bottleneck_flat_features_train.npy')) 
    train_labels = np.array([0] * (nb_train_samples/2) + [1] * (nb_train_samples/2)) 
# 
    validation_data = np.load(open('bottleneck_flat_features_validation.npy')) 
    validation_labels = np.array([0] * (nb_validation_samples/2) + [1] * (nb_validation_samples/2)) 
# 
    top_m = Sequential() 
    top_m.add(Dense(2,input_shape=train_data.shape[1:], activation='softmax', name='top_dense1')) 
    top_m.compile(optimizer='rmsprop', loss='sparse_categorical_crossentropy', metrics=['accuracy']) 
# 
    top_m.fit(train_data, train_labels, 
    nb_epoch=nb_epoch, batch_size=my_batch_size, 
    validation_data=(validation_data, validation_labels)) 

现在,它的工作原理和收敛。

1

难道你不想编译和适应top_m而不是模型?

+0

谢谢,我的不好,相应编辑的问题。 – user2182857

+0

那么错误仍然存​​在?! –

+0

错误已更改为 ValueError:检查模型目标时出错:期望的top_dense1具有形状(无,2)但获取具有形状的数组(012,1) 正如已更正的问题中所述。 – user2182857