我正在尝试使用keras进行逻辑回归,这是我在ML中的第一个实验之一。假设我想用一个非常简单的连续函数来预测值,只有一个参数,比如<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
Sort By Field:
<select name="sort_by" id="sort_by">
<option value="shipdate">Ship Date</option>
<option value="value">Value</option>
</select>
<br/>Sort Direction:
<select name="sort_order" id="sort_order">
<option value="asc">Earliest Date First</option>
<option value="desc">Latest Date First</option>
</select>
</form>
我试图训练这样的模型:
y = x*10
给我结果
from matplotlib import pyplot as plt
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation
# fix random seed for reproducibility
np.random.seed(7)
# function
curve = np.vectorize(lambda x: x*10)
# data
Xideal = np.arange(1, 15.5, 0.005)
Yideal = curve(Xideal)
X = Xideal[1::5]
Y = curve(X)
# Model
model = Sequential()
model.add(Dense(20, activation='sigmoid', input_dim=1))
model.add(Dense(5, activation='linear'))
model.add(Dense(1))
model.compile(loss='mse', optimizer='rmsprop', metrics=['accuracy'])
# Fit
model.fit(X, Y, nb_epoch=1000, batch_size=32, verbose=0)
# Evaluate
# evaluate the model
scores = model.evaluate(Xideal, Yideal)
print("\n%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
print("\n%s: %.2f%%" % (model.metrics_names[0], scores[0]*100))
不确定为什么它只有2.38%的准确率。我正在试验具有不同激活功能,批量大小和时代的不同模型,但精度最高可达10%。我想我想念一些基本的东西
答案 0 :(得分:2)
对于此线性数据,单个Dense层就足够了。 我只使用梯度下降而不是rmsprop。
我为您创建了一个ipython笔记本:http://nbviewer.jupyter.org/gist/lhk/6650e4fb85f625199ee5be6d52cbbd0d
请注意:在图中我必须手动将两条线彼此分开。这就是为什么有-2的原因。