У меня есть стандартный CSV-файл с кучей строк, каждый из которых содержит 60 столбцов случайных чисел (с плавающей точкой). В столбцах 61-63 у меня есть числа (снова плавающие), которые являются некоторой функцией первых 60 столбцов.
Я сделал сумму первых 20 столбцов, умноженную на сумму следующих 40 столбцов для первого «выходного» столбца, а затем других произвольных вариаций для следующих двух выходных столбцов. Я хочу, чтобы мой алгоритм машинного обучения использовал эти формульные отношения и давал прогнозы для трех выходных чисел.
Вот как я читаю в данных
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
import pandas as pd
from sklearn.utils import shuffle
from sklearn.model_selection import train_test_split
def read_data():
rd = pd.read_csv(file_path)
x = rd[rd.columns[0:60]].values
y = rd[rd.columns[60:63]].values
X = x.astype(float) #just making sure we have the right dtype
Y = y.astype(float)
print(X.shape)
print(Y.shape)
return (X, Y)
X, Y = read_data()
Затем я перетасовываю и разбиваю данные на наборы для обучения и тестирования
X, Y = shuffle(X, Y, random_state=1)
train_x, test_x, train_y, test_y = train_test_split(X, Y, test_size=0.25, random_state=117)
Далее я определяю свою модель, веса и уклоны
n_dim = X.shape[1]
print("n_dim", n_dim)
n_output = Y.shape[1]
print("n_output", n_output)
n_hidden_1 = 100
n_hidden_2 = 75
n_hidden_3 = 50
n_hidden_4 = 50
x = tf.placeholder(tf.float32, [None, n_dim])
W = tf.Variable(tf.zeros([n_dim, n_output]))
b = tf.Variable(tf.zeros([n_output]))
y = tf.placeholder(tf.float32, [None, n_output])
def layered_model(x, weights, biases):
# 4 hidden layers with sigmoid and relu
layer_1 = tf.add(tf.matmul(x, weights['w1']), biases['b1'])
layer_1 = tf.nn.sigmoid(layer_1)
layer_2 = tf.add(tf.matmul(layer_1, weights['w2']), biases['b2'])
layer_2 = tf.nn.sigmoid(layer_2)
layer_3 = tf.add(tf.matmul(layer_2, weights['w3']), biases['b3'])
layer_3 = tf.nn.sigmoid(layer_3)
layer_4 = tf.add(tf.matmul(layer_3, weights['w4']), biases['b4'])
layer_4 = tf.nn.relu(layer_4)
out_layer = tf.matmul(layer_4, weights['out']) + biases['out']
return out_layer
weights = {
'w1': tf.Variable(tf.truncated_normal([n_dim, n_hidden_1])),
'w2': tf.Variable(tf.truncated_normal([n_hidden_1, n_hidden_2])),
'w3': tf.Variable(tf.truncated_normal([n_hidden_2, n_hidden_3])),
'w4': tf.Variable(tf.truncated_normal([n_hidden_3, n_hidden_4])),
'out': tf.Variable(tf.truncated_normal([n_hidden_4, n_output]))
}
biases = {
'b1': tf.Variable(tf.truncated_normal([n_hidden_1])),
'b2': tf.Variable(tf.truncated_normal([n_hidden_2])),
'b3': tf.Variable(tf.truncated_normal([n_hidden_3])),
'b4': tf.Variable(tf.truncated_normal([n_hidden_4])),
'out': tf.Variable(tf.truncated_normal([n_output]))
}
Как мне передать свои данные в функцию стоимости, а затем использовать ее для моих эпох? Все учебники, которые я могу найти, предназначены для помеченных наборов данных, помещающих вещи в «ведра». Принимая во внимание, что это чисто цифровой ввод / вывод.
Единственная информация, которую я могу найти, - это то, что в числовых функциях стоимости обычно используется метод квадратов ошибок, и feed_dict будет необходим:
cost_function = tf.reduce_mean(tf.square(prediction - actual))