Я новичок в машинном обучении и Tensorflow и хочу выполнить простую двумерную классификацию данных, которые нельзя разделить линейно.
С левой стороны вы можете увидеть обучающие данные для модели. Справа показано, что предсказывает обученная модель.
На данный момент я переоснащаю свою модель, поэтому в модель подаются все возможные входные данные. Моим ожидаемым результатом будет очень высокая точность, поскольку модель уже «знает» каждый ответ. К сожалению, глубокая нейронная сеть, которую я использую, может разделять только линейным делителем, что не соответствует моим данным.
Вот как я тренирую свою модель:
def testDNN(data):
"""
* data is a list of tuples (x, y, b),
* where (x, y) is the input vector and b is the expected output
"""
# Build neural network
net = tflearn.input_data(shape=[None, 2])
net = tflearn.fully_connected(net, 100)
net = tflearn.fully_connected(net, 100)
net = tflearn.fully_connected(net, 100)
net = tflearn.fully_connected(net, 2, activation='softmax')
net = tflearn.regression(net)
# Define model
model = tflearn.DNN(net)
# check if we already have a trained model
# Start training (apply gradient descent algorithm)
model.fit(
[(x,y) for (x,y,b) in data],
[([1, 0] if b else [0, 1]) for (x,y,b) in data],
n_epoch=2, show_metric=True)
return lambda x,y: model.predict([[x, y]])[0][0]
Большая часть взята из примеров tflearn, так что я не совсем понимаю, что делает каждая строчка.