Я пытаюсь провести некоторый регрессионный анализ некоторых полетных данных.Я загрузил свои параметры (предыдущие файлы .mat) и теперь у меня есть 6 параметров в качестве предикторов в списке форматов и один параметр ответа в списке форматов.
То, что я до сих пор делал, - это объединение предикторов в один объединенный список.Теперь я хотел создать модель и обучить ее, но, как я и ожидал, список форматов несовместим.Я получил ошибку: AttributeError: у объекта 'list' нет атрибута 'shape'
Таким образом, я попытался преобразовать списки в тензор с помощью tf.convert_to_tensor.К сожалению, это не работает.Теперь я получаю сообщение об ошибке: ValueError: установка элемента массива с последовательностью
К сожалению, я только узнал, как выполнить классификацию изображений с CNN в тензорном потоке, и я не уверен, какой формат является правильным для предоставления моегоданные на входной слой.Прямо сейчас мои предикторы состоят из 6 параметров, взятых каждые 0,1 секунды.Список имеет такую форму:
[[('__header__', b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Dec 26 19:17:10 2018'), ('__version__', '1.0'), ('__globals__', []), ('RSVRQuantity_Center', array([[111],
[111],
[111],
...,
[104],
[104],
[104]], dtype=uint8))], [('__header__', b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Dec 26 19:32:29 2018'), ('__version__', '1.0'), ('__globals__', []), ('RSVRTemp_Center', array([[36.5 ],
[36.5 ],
[36.5 ],
...,
[ 4.625],
[ 4.625],
[ 4.625]]))], [('__header__', b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Dec 26 19:33:00 2018'), ('__version__', '1.0'), ('__globals__', []), ('AirDrivenPumpTemp1_Center', array([[ 35.9 ],
[ 35.9 ],
[ 35.9 ],
...,
[-13.75],
[-13.75],
[-13.75]]))], [('__header__', b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Dec 26 19:33:29 2018'), ('__version__', '1.0'), ('__globals__', []), ('AirDrivenPumpTemp2_Center', array([[ 35.9 ],
[ 35.9 ],
[ 35.9 ],
...,
[-13.13],
[-13.13],
[-13.13]]))], [('__header__', b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Dec 26 19:34:12 2018'), ('__version__', '1.0'), ('__globals__', []), ('ElecPumpTemp1_Center', array([[45.9 ],
[45.9 ],
[45.9 ],
...,
[14.63],
[14.63],
[14.63]]))], [('__header__', b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Dec 26 19:33:54 2018'), ('__version__', '1.0'), ('__globals__', []), ('ElecPumpTemp2_Center', array([[43.6 ],
[43.6 ],
[43.6 ],
...,
[12.75],
[12.75],
[12.75]]))]]
Модель, которую я создал до сих пор, выглядит следующим образом:
def GradientDescent(features, labels, mode):
# create an dense layer as input layer with 6 units for 6 features and ReLU activation function
input_layer = tf.layers.dense(inputs=features["x"], units=6, activation=tf.nn.relu)
# declare a dense layer with 12 units and ReLU activation function
hidden1 = tf.layers.dense(inputs=input_layer, units=12, activation=tf.nn.relu)
# declare a dense layer with 12 units and ReLU activation function
hidden2 = tf.layers.dense(inputs=hidden1, units=12, activation=tf.nn.relu)
# declare a dense layer with 6 units and ReLU activation function
hidden3 = tf.layers.dense(inputs=hidden2, units=6, activation=tf.nn.relu)
# declare a dense layer with 1 unit as output layer
logits = tf.layers.dense(inputs=hidden3, units=1)
predictions = tf.argmax(input=logits, axis=1)
# return the estimator when predicting (no loss and training function needs to be defined here)
if mode == tf.estimator.ModeKeys.PREDICT:
return tf.estimator.EstimatorSpec(mode=mode, predictions=predictions)
# declare the loss function sparse softmax cross entropy
loss = tf.losses.sparse_softmax_cross_entropy(labels=labels,logits=logits)
# declare a decreasing learning rate
# starter_learning_rate = 0.1
# global_step = tf.Variable(0, trainable=False)
# learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step, 10000, 0.96, staircase=True)
# declare a gradient descent optimizer with a decreasing learning rate
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train_op = optimizer.minimize(loss=loss, global_step=tf.train.get_global_step())
# define the accuracy error metric
eval_metric_ops = {
"accuracy": tf.metrics.accuracy(labels=labels, predictions=predictions)
}
#tf.summary.scalar('accuracy', accuracy)
return tf.estimator.EstimatorSpec(mode=mode, loss=loss, train_op=train_op, predictions=predictions, eval_metric_ops=eval_metric_ops)
Я даю данные для обучения следующим образом:
HydSysPress_Center_PTRTRQ = tf.estimator.Estimator(model_fn=GradientDescent, model_dir="GradDescent_10000")
train_input = tf.estimator.inputs.numpy_input_fn(x={"x": Predictors}, y=HydSysPress_Center, batch_size=64, num_epochs=None, shuffle=False)
HydSysPress_Center_PTRTRQ.train(input_fn=train_input, steps=100)
Я хочу начать обучение модели, не смешивая столбцы и строки параметров, поскольку каждый параметр берется с фиксированной отметкой времени.За каждый полезный ответ я был бы очень благодарен!