Tflearn 网络始终对线性函数建模
Tflearn network always models a linear function
我正在尝试使用神经网络对 f(x) = x^2 图建模,我正在 tflearn 中制作它。
但即使使用多层,当我从模型中绘制一些点时,它总是绘制一条直线。
import numpy as np
from matplotlib import pyplot
import tflearn
x = list()
y = list()
for i in range(100):
x.append(float(i))
y.append(float(i**2))
features = np.array(x).reshape(len(x),1)
labels = np.array(y).reshape(len(y), 1)
g = tflearn.input_data(shape=[None, 1])
g = tflearn.fully_connected(g, 128)
g = tflearn.fully_connected(g, 64)
g = tflearn.fully_connected(g, 1)
g = tflearn.regression(g, optimizer='sgd', learning_rate=0.01,
loss='mean_square')
# Model training
m = tflearn.DNN(g)
m.fit(features, labels, n_epoch=100, snapshot_epoch=False)
x = list()
y = list()
for i in range(100):
x.append(i)
y.append(float(m.predict([[i]])))
pyplot.plot(x, y)
pyplot.plot(features, labels)
pyplot.show()
绿线是 x^2 图,蓝线是模型。
默认tflearn.fully_connected
有activation='linear'
所以无论你堆叠多少层你都只能近似线性函数。
尝试不同的激活函数,例如 tflearn.fully_connected(g, 128, activation='tanh')
并将输出层保留为 activation='linear'
,这样它就不会剪切您的输出。
我正在尝试使用神经网络对 f(x) = x^2 图建模,我正在 tflearn 中制作它。 但即使使用多层,当我从模型中绘制一些点时,它总是绘制一条直线。
import numpy as np
from matplotlib import pyplot
import tflearn
x = list()
y = list()
for i in range(100):
x.append(float(i))
y.append(float(i**2))
features = np.array(x).reshape(len(x),1)
labels = np.array(y).reshape(len(y), 1)
g = tflearn.input_data(shape=[None, 1])
g = tflearn.fully_connected(g, 128)
g = tflearn.fully_connected(g, 64)
g = tflearn.fully_connected(g, 1)
g = tflearn.regression(g, optimizer='sgd', learning_rate=0.01,
loss='mean_square')
# Model training
m = tflearn.DNN(g)
m.fit(features, labels, n_epoch=100, snapshot_epoch=False)
x = list()
y = list()
for i in range(100):
x.append(i)
y.append(float(m.predict([[i]])))
pyplot.plot(x, y)
pyplot.plot(features, labels)
pyplot.show()
绿线是 x^2 图,蓝线是模型。
默认tflearn.fully_connected
有activation='linear'
所以无论你堆叠多少层你都只能近似线性函数。
尝试不同的激活函数,例如 tflearn.fully_connected(g, 128, activation='tanh')
并将输出层保留为 activation='linear'
,这样它就不会剪切您的输出。