【发布时间】:2018-01-23 01:50:24
【问题描述】:
我正在使用一些简单的模型:
model = Sequential()
model.add(Dense(12, input_dim=len(allKeys), activation='tanh', kernel_initializer='uniform'))
model.add(Dense(31, activation='tanh'))
model.add(Dense(N, activation='relu'))
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(X, Y, epochs=500, batch_size=40)
X.shape (31, 147) Y.shape (31, 13)
X 中的值要么为 0,要么低于 1.0。 Y,为稀疏数组,一行一列为1,其余列为0。
acc 始终低于 0.25。大多数时候它只是0.12。如果我添加 dropout 层,我会看到 acc 值发生变化,但不高于 0.25,大多数时候只会给出更差的结果。
290/500 纪元 31/31 [==============================]-0s-损失:9.6283-acc:0.1290 纪元 291/500 31/31 [==============================]-0s-损失:9.6283-acc:0.1290 纪元 292/500 31/31 [==============================] - 0s - 损失:9.6283 - acc:0.1290
-------------- 更新代码 ----- -------------
model = Sequential()
model.add(Dense(12, input_dim=len(allKeys), activation='tanh', kernel_initializer='uniform'))
model.add(Dense(31, activation='tanh'))
model.add(Dropout(0.2))
model.add(Dense(N, activation='softmax'))
sgd = SGD(lr=0.001, momentum=0.3, decay=0.0, nesterov=False)
model.compile(optimizer=sgd,loss='categorical_crossentropy',metrics=['accuracy'])
one_hot_labels = to_categorical(Y, num_classes=N)
model.fit(X, one_hot_labels, epochs=100, batch_size=40)
【问题讨论】:
-
这个网络是在做回归还是分类?在分类的情况下有多少类?
-
如果你有 8 个类,其理论上的准确度为零,因为它可能每次都触发相同的类,尝试在 tensorboard 中绘制激活直方图和分布。什么是输入?这种架构可能太难了。
-
更新了代码,1.使用步骤0.001。 2. 尝试有/没有辍学。 3.最后一步由relu改为softmax。 4. 用于to_category。结果还是一样;
-
回复:Matias:这是为了分类。共13例。
-
回复:约瑟夫:张量板很有趣!我想知道我是否可以将它用于 keras。似乎 tensorboard 正在使用 tensorflow.session(),我不知道如何从 keras 访问它。
标签: deep-learning keras keras-layer