【发布时间】:2019-12-18 07:40:57
【问题描述】:
我从深度学习开始。我正在尝试使用多层模型学习二次函数。 predicted_y 似乎总是一行(learnX 的构建),我在这里做错了什么?
我希望代码清楚。这是我的 Jupiterlab 单元代码:
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Activation
from sklearn.preprocessing import MinMaxScaler
def my_build_model(X, y):
model = Sequential([
Dense(16, input_shape=(X.shape[1],)),
Activation('relu'),
Dense(8),
Activation('relu'),
Dense(4),
Activation('relu'),
Dense(1),
])
model.compile(loss="mean_squared_error", optimizer='adam', metrics=['mse'])
model.fit(X, y, epochs=100)
_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy*100))
return model
n_rows = 20
X=pd.DataFrame({
'a': [1 + x for x in range(-n_rows, 5+n_rows)],
'b': [2 + x for x in range(-n_rows, 5+n_rows)],
'c': [3 + x for x in range(-n_rows, 5+n_rows)],
'd': [4 + x for x in range(-n_rows, 5+n_rows)],
'e': [5 + x for x in range(-n_rows, 5+n_rows)],
'f': [6 + x for x in range(-n_rows, 5+n_rows)],
})
y=pd.Series([10 + random.random() + x * x for x in range(-n_rows, 5+n_rows)])
csX = MinMaxScaler()
XContinuous = csX.fit_transform(X)
model = my_build_model(X=XContinuous, y=y)
df = pd.DataFrame({'y': y, 'predict_y': [x for [x] in model.predict(XContinuous)]})
df['y'].plot(c='#ff0000aa', label='y', legend=True)
plt.show()
df['predict_y'].plot(c='#00bb00aa', label='predict_y', legend=True)
plt.show()
【问题讨论】: