Вот мой тип данных и то, что я хочу сделать: у меня есть тензор X, содержащий все входные данные для обучения (весь пакет), и тензор Y, содержащий своего рода «целевые значения» для каждого X_entry.
Затем я хочу создать NN на основе GRU, но сейчас я только что попробовал с простым одиночным нейронным слоем, который дает мне результат с активацией tanh.
visible = Input(shape=(input_len_array,))
output_layer = Dense(1, activation='tanh')(visible)
model = Model(inputs=visible, outputs=output_layer)
# Prints the shape of the NN
print(model.summary())
Мой X-тензор выглядит так:
My x : Tensor("transpose_2:0", shape=(3672, 8), dtype=float32)
Я хотел бы взять целые данные, X-тензор (который можно рассматривать как пакет), и для каждого входа в тензор я предсказываю значение, я умножаю его на значение Y (целевое значение ), Я, наконец, хочу, чтобы между средним () и стандартным значением () этих значений было ТО, что это моя потеря, указанная для партии.
Пока я пробовал a для l oop, но он сказал мне, что это не дифференцируемо («Операция имеет None
для градиента»).
Кто-то сказал мне, что это связано с для l oop, поэтому я попробовал эту реализацию:
def custom_loss(x_, y_):
predicted_array = model.predict_on_batch(x_) # steps=int(x_.get_shape()[0])
predicted_array = tf.convert_to_tensor(predicted_array)
neg_Sharpe = -(K.mean(tf.multiply(predicted_array, y_)) / (0.001 + K.std(tf.multiply(predicted_array, y_))))
def loss(y_true, y_pred):
return neg_Sharpe
return loss
# I previously defined my X and Y tensors and now I feed them into the compile funct
self.model.compile(optimizer='adam', loss=custom_loss(x, y))
#It works until here without visible error... then I try:
for epoch in range(self.__n_epoch):
self.model.train_on_batch(x, y)
И тогда он останавливается и говорит:
An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.
Знает ли кто-нибудь, как вычислить, что я что, не имея недифференцируемой функции? Я искал другие оптимизаторы, которым, возможно, не нужен определенный градиент, но он не смог его найти ...
Я был бы более чем благодарен за вашу помощь !! СПАСИБО!