- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下是我的 MLP 模型,
layers = [10,20,30,40,50]
model = keras.models.Sequential()
#Stacking Layers
model.add(keras.layers.Dense(layers[0], input_dim = input_dim, activation='relu'))
#Defining the shape of input
for layer in layers[1:]:
model.add(keras.layers.Dense(layer, activation='relu'))
#Layer activation function
# Output layer
model.add(keras.layers.Dense(1, activation='sigmoid'))
#Pre-training
model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
#Training
model.fit(train_set, test_set, validation_split = 0.10, epochs = 50, batch_size = 10, shuffle = True, verbose = 2)
# evaluate the network
loss, accuracy = model.evaluate(train_set, test_set)
print("\nLoss: %.2f, Accuracy: %.2f%%" % (loss, accuracy*100))
#predictions
predt = model.predict(final_test)
print(predt)
问题是,准确度始终为0,错误日志如图所示,
Epoch 48/50 - 0s - loss: 1.0578 - acc: 0.0000e+00 - val_loss: 0.4885 - val_acc: 0.0000e+00
Epoch 49/50 - 0s - loss: 1.0578 - acc: 0.0000e+00 - val_loss: 0.4885 - val_acc: 0.0000e+00
Epoch 50/50 - 0s - loss: 1.0578 - acc: 0.0000e+00 - val_loss: 0.4885 - val_acc: 0.0000e+00
2422/2422 [==============================] - 0s 17us/step
Loss: 1.00, Accuracy: 0.00%
按照建议,我已将学习信号从 -1,1 更改为 0,1,但以下是错误日志
Epoch 48/50 - 0s - loss: 8.5879 - acc: 0.4672 - val_loss: 8.2912 - val_acc: 0.4856
Epoch 49/50 - 0s - loss: 8.5879 - acc: 0.4672 - val_loss: 8.2912 - val_acc: 0.4856
Epoch 50/50 - 0s - loss: 8.5879 - acc: 0.4672 - val_loss: 8.2912 - val_acc: 0.4856
2422/2422 [==============================] - 0s 19us/step
最佳答案
你的代码很难读。这不是编写 Keras 模型的推荐标准。尝试一下,让我们知道您会得到什么。假设 X 是一个矩阵,其中行是实例,列是特征。 Y 是标签
您需要添加一个 channel 作为最后一个维度,如使用 TensorFlow 后端时所述。此外,标签应分为 2 个节点,以获得更好的成功机会。与使用具有 2 个节点的概率输出相比,单个神经元映射通常不太成功。
n = 1000 # Number of instances
m = 4 # Number of features
num_classes = 2 # Number of output classes
... # Your code for loading the data
X = X.reshape(n, m,)
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.33)
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
构建您的模型。最后一层应使用 sigmoid 或 softmax 来执行分类任务。尝试使用 Adadelta 优化器,它已被证明可以通过更有效地遍历梯度并减少振荡来产生更好的结果。我们还将使用交叉熵作为损失函数,这是分类任务的标准。二元交叉熵也很好。
尝试使用标准模型配置。增加节点数量并没有多大意义。该模型应该看起来像一个棱镜,由一小组输入特征、许多隐藏节点和一小组输出节点组成。您应该以最少的隐藏层数为目标,使层更厚,而不是添加层。
input_shape = (m,)
model = Sequential()
model.add(Dense(32, activation='relu', input_shape=input_shape))
model.add(Dense(64, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
您可以使用以下方式获取模型摘要
model.summary()
训练你的模型
epochs = 100
batch_size = 128
# Fit the model weights.
history = model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(x_test, y_test))
查看训练期间发生的情况
plt.figure(figsize=(8,10))
plt.subplot(2,1,1)
# summarize history for accuracy
plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'validation'], loc='lower right')
plt.subplot(2,1,2)
# summarize history for loss
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'validation'], loc='upper right')
plt.show()
关于python - keras MLP 精度为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50481178/
我想使用简单的 MLP 模型进行迁移学习。首先,我在大数据上训练 1 个隐藏层前馈网络: net = Sequential() net.add(Dense(500, input_dim=2048, k
最近我正在使用 Tensorflow。我正在探索如何在 Tensorflow 中实现多层感知器。 我在网上学习了很多教程。他们中的大多数使用一两个隐藏层。一个简单的例子取自 here def forw
我对机器学习非常陌生,正在尝试实现 MLP,但是成本函数似乎在达到全局最小值之前就达到了局部最小值。我将成本绘制为迭代函数(包括 0 值,以免被 y 轴的起始位置所迷惑)。 这是我尝试使用的代码: i
以下是我的 MLP 模型, layers = [10,20,30,40,50] model = keras.models.Sequential() #Stacking Layers model.add
我是机器学习的新手,我正在开发一个 python 应用程序,该应用程序使用数据集对扑克牌进行分类,我将发布片段。似乎效果不太好。它无法正确对手进行分类。我收到以下错误 ", line 298, in
我有这样的数据 有 29 列,我必须预测其中的 winPlacePerc(数据帧的最末端)在 1 之间(高百分比)到 0(低百分比) 在 29 列中,25 是数字 数据 3 是 ID(对象) 1 是
您好,我正在尝试修改 mnist 示例以使其与我的数据集相匹配。我只尝试使用 mlp 示例,但它给出了一个奇怪的错误。 数据集是一个有 2100 行和 17 列的矩阵,输出应该是 16 个可能的类别之
我在 Dlib 中创建了一个多层感知器网络: mlp::kernel_1a_c net(2,5); 输入层有 2 个节点,第一个隐藏层有 5 个节点。该网络是否已经包含偏置节点?还是必须自己添加? 最
我正在 matlab 中制作一个具有反向传播的 MLP 神经网络。问题是,它似乎无法很好地处理函数中的曲线,也无法很好地与值进行缩放。例如,它可以达到 cos(x) 的 80%,但如果我输入 100*
我是 OpenCV 世界和神经网络的新手,但我有一些 C++/Java 编码经验。 我创建了我的第一个 ANN MLP 并学习了 XOR: #include #include #include
给定输入特征,仅原始数字: tensor([0.2153, 0.2190, 0.0685, 0.2127, 0.2145, 0.1260, 0.1480, 0.1483, 0.1489,
我正在尝试使用简单的时间序列预测。给定数量的输入(1 分钟滴答) Net 应该尝试预测下一个。我用不同的设置训练了 3 个网络来说明我的问题: 在右侧,您可以看到 3 个训练器 MLP - 随机命名和
我正在运行 MLP 将一组值分为 10 个不同的类别。 简单来说,我有一个声纳,它可以提供 400 个物体的“读数”。每个读数都是 1000 个浮点值的列表。 我已扫描了总共 100 个对象,想要对它
我正在创建一个简单的神经网络,其中有一个隐藏层用于分类。 我的输入数据集已准备好并保存在 .t7 文件中。 input = { data : DoubleTensor - size: 1400x1
我设置了以下参数: parameter_space = { 'hidden_layer_sizes': [(sp_randint.rvs(100,600,1),sp_randint.rvs(1
我正在使用机器学习制作一个国际象棋引擎,但在调试它时遇到了问题。我需要帮助找出我的程序出了什么问题,如果有任何帮助,我将不胜感激。 我进行了研究,并从多个成功的项目中借鉴了想法。这个想法是使用强化学习
我正在学习机器学习,我看到一些 Material 表明MLP(多层感知器)可能会陷入局部最小值。我想通过做一些实验来学习,但我在网上搜索了具体的例子,但找不到任何例子。谁能告诉我在哪里可以找到可以由我
我(有点像初学者)在时间序列数据应用程序上尝试使用 Keras,我创建了一个回归模型,然后将其保存以在不同的 Python 脚本上运行。 我正在处理的时间序列数据是每小时数据,我使用 Keras 中保
我尝试使用 keras(支持 tensorflow )创建一个神经网络。我有 4 个输入变量和 2 个输出变量:不可用 我想对不可用的测试集进行预测。 这是我的代码: from keras impor
我使用 theano 编写了一个 MLP 分类器。使用反向传播算法的训练函数如下: self.weights=[theano.shared(numpy.random.random((network.a
我是一名优秀的程序员,十分优秀!