我正在尝试在运行以下代码的声音数据集上训练ANN模型,该数据集具有320行和50列:
Model= Sequential([ Flatten(),
Dense(16, input_shape=(1,50), activation= 'relu' ) ,
Dense(32, activation= 'relu' ),
Dense(2, activation='softmax' ) ,
])
Model.compile(Adam(lr=0.0001), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Model.fit(S_T_S, T_L, validation_split=0.1, batch_size=20, epochs=20, shuffle='true', verbose=2)
我收到以下错误:
输入0与flatten_15层不兼容:预期的min_ndim = 3,找到的ndim = 2,
答案 0 :(得分:0)
如果数据集具有(N,C)形状,其中N是数据点的数量,C是单个数据点的通道数,则第一层的input_shape参数应仅指定通道。 >
model= Sequential([
Dense(16, input_shape=(50,), activation= 'relu' ) ,
Dense(32, activation= 'relu' ),
Dense(2, activation='softmax' ) ,
])
model.compile(Adam(lr=0.0001), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(S_T_S, T_L, validation_split=0.1, batch_size=20, epochs=20, shuffle='true', verbose=2)
如果输出类的数量为两个,则具有一个节点的输出层比使用具有两个节点的输出层更好。在这种情况下,应将输出层的激活更改为S型,而将损失更改为二进制交叉熵。
model= Sequential([
Dense(16, input_shape=(50,), activation= 'relu' ) ,
Dense(32, activation= 'relu' ),
Dense(1, activation='sigmoid' ) ,
])
model.compile(Adam(lr=0.0001), loss='sparse_binary_crossentropy', metrics=['accuracy'])