【发布时间】:2019-10-17 21:11:01
【问题描述】:
我目前正在尝试学习简单的神经网络识别 4 种不同的输出。有 2-value-inputs 实际上是这样的:
输出 + 均匀(-0.2,0.2) + 1
这些数据只有 200 条记录 - 但对我来说,尽可能少地保留数据很重要。
旁边的输入输出示例:
0.9936288071867917,1.0163870658585894 - 0
2.0133450399223953,1.9965272907556022 - 1
3.013918319917813,3.018102735071009 - 2
3.9935640040186025,4.00379069782054 - 3
我尝试设置不同数量的 epoch、隐藏神经元和激活函数。问题是我想让神经网络保持非常简单——这意味着只有两个隐藏层,每层最多有大约 20 个隐藏神经元。 无论我做什么,它仍然没有学习或学习很差。
这里是代码
import keras
import numpy as np
from sklearn.model_selection import train_test_split
#import pandas as pd
#import tensorflow as tf
from sklearn.utils import shuffle
from sklearn import metrics
seed = 10
np.random.seed(seed)
dataset = np.loadtxt("dataset.csv",delimiter=',')
#dataset = shuffle(dataset)
X = dataset[:,:2]
Y = dataset[:,2]
#print(X)
#print(Y)
(X_train,X_test,Y_train,Y_test) = train_test_split(X, Y, test_size=0.10, random_state=seed)
input_shape = (2,)
model = keras.models.Sequential()
model.add(keras.layers.InputLayer(input_shape))
model.add(keras.layers.core.Dense(8, activation='sigmoid'))
model.add(keras.layers.core.Dense(4, activation='sigmoid'))
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
history = model.fit(X_train,Y_train,validation_split=0.10,epochs=30)
val_loss, val_acc = model.evaluate(X_test,Y_test)
print('\nCost = ',val_loss,'\nAccuracy = ',val_acc,'\n')
通过 epochs(几乎相同)和评估,我仍然得到这样的结果:
Cost = 1.40975821018219
Accuracy = 0.20000000298023224
我能做些什么来改进这个神经网络?
【问题讨论】:
标签: python-3.x machine-learning keras neural-network classification