我是机器学习的新手。我尝试制作最简单的模型,但与所有“ hello world”教程不同。
我没有很大的数据集,所以我决定训练该模型,该模型将确定输入数字是奇数还是偶数。
# create a model that defines if number is odd or even
def generate_data(length, is_random=False):
res = []
for i in range(0, length):
number = i if not is_random else random.randrange(0, 99999)
if number % 2 != 0:
res.append([number, 1])
else:
res.append([number, 0])
return res
train_data = generate_data(5000, is_random=True)
data_set = np.array(train_data)
random_number = data_set[:, 0:1]
is_random_number_even = data_set[:, 1]
print('X: {}'.format(random_number))
print('Y: {}'.format(is_random_number_even))
model = Sequential()
model.add(Dense(3, input_dim=1, activation='relu'))
model.add(Dense(3, activation='sigmoid'))
model.add(Dense(4, activation='sigmoid'))
model.add(Dense(1, activation='sigmoid'))
# compile the keras model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(random_number, is_random_number_even, epochs=100, batch_size=30)
_, accuracy = model.evaluate(random_number, is_random_number_even)
print('Accuracy: %.2f' % (accuracy*100))
在此代码中,我生成输入数据来训练模型,创建一个具有2个内部层且节点数量不同的模型(在教程中编写,每层没有层数和注释的规则),然后尝试训练它。
问题是精度始终约为50%,有时在更改每个图层的层数和节点数时,我的准确度为52%,但从未更改。似乎尽管有很多关于该主题的文章,但我仍然缺少一些东西。
有人可以告诉我这是怎么回事,什么是正确的前进方向?