#python #numpy #tensorflow #keras
#python #numpy #tensorflow #keras
Вопрос:
Я новичок в машинном обучении и пытаюсь понять, как создавать модели.
Что я пытаюсь сделать.
import tensorflow as tf
import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
# this are my X and Y values
X = np.array([ [x, x 1 ] for x in range(80) ])
Y = [ x 2 for x in range(80) ]
# The data given in this case is random but has a pridictable pattern.
# if i would use a list of [81,82,1,2]
# to predict once i fit the model it will give 83.
# I have this extra information that could be helpful for the prediction.
extra_info = [ 1, 2 ]
# What is the best way to add this extra information?
# This is the only way i konw how to add it:
X = np.array([ [x, x 1, extra_info[0], extra_info[1] ] for x in range(80) ])
Это правильный способ сделать это?
Это не приведет к путанице в модели?
И если extra_info
бы в нем было более 1000 полей, это тоже было бы правильно?
model = keras.Sequential([
layers.Dense( 64, activation='relu', input_shape =[ 4 ] ),
layers.Dense( 64, activation='relu' ),
layers.Dense( 1 )
])
model.compile(
loss='mse',
optimizer = tf.keras.optimizers.RMSprop( 0.001 ),
metrics=['mae', 'mse']
)
history = model.fit(
X, Y, epochs=20, verbose=0,
)
print(model.predict(np.array([80,81,1,2])))
Ответ №1:
Если у вас есть дополнительная информация, которую вы хотите передать модели, вам следует обратиться к функциональному API Keras. Это позволяет вам определять дополнительные входные данные, а затем объединять разные пути. Это позволяет, например, создать один путь ввода для каждого объекта.
Если вам нужно придерживаться последовательного API, это, вероятно, лучший и единственный способ справиться с этим на данный момент.
Ответ №2:
Проблема, с которой вы столкнетесь при выполнении этого, заключается в следующем: 1. Данные хранятся в массиве numpy, а не в тензоре, который является входным сигналом, ожидаемым моделью. Чтобы преобразовать их, вам просто нужно использовать метод tensorflow convert_to_tensor (ознакомьтесь с этой документацией: https://www.tensorflow.org/api_docs/python/tf/convert_to_tensor ). Это будет выглядеть примерно так:
X = tf.convert_to_tensor(X)
Y = tf.convert_to_tensor(Y)
2. На самом деле модель не может предсказать здесь шаблон, поскольку вы просто вводите в него случайные числа, поэтому будет казаться, что он ничему не учится. 3. При прогнозировании вы предоставляете весь обучающий набор данных, что может немного запутать ситуацию. 2 и 3 на самом деле не имеют никаких проблем, просто нужно иметь в виду. В остальном у вас все отлично.
Надеюсь, это помогло!
Комментарии:
1. Пункт 1 неверен. Вам не нужно преобразовывать входные данные в тензоры (см. keras.io/getting_started/intro_to_keras_for_engineers ). Также пункт 2 на самом деле не соответствует действительности, поскольку во входных данных явно присутствует шаблон…
2. Да, но это все равно даст случайный результат.