У меня есть вопрос относительно функций tf.keras и tf в tf 2.0. Если у меня есть модель, подобная этой:
inputdata = keras.Input(shape=(2048, 1))
x = layers.Conv1D(16, 3, activation='relu')(inputdata)
x = layers.Conv1D(32, 3, activation='relu')(x)
x = layers.Conv1D(64, 3, activation='relu')(x)
, и я хочу добавить пользовательскую функцию, подобную этой, это 1-слой субпикселя:
def SubPixel1D(I, r):
with tf.name_scope('subpixel'):
X = tf.transpose(I, [2,1,0]) # (r, w, b)
X = tf.batch_to_space_nd(X, [r], [[0,0]]) # (1, r*w, b)
X = tf.transpose(X, [2,1,0])
return X
, могу ли я включить этот слой в керас без проблем? Так как тензор потока 2.0 намного проще, чем предыдущие версии тензор потока, я не уверен в этом, если это не смешивает бэкэнды и сеансы?
inputdata = keras.Input(shape=(2048, 1))
x = layers.Conv1D(16, 3, activation='relu')(inputdata)
x = layers.Conv1D(32, 3, activation='relu')(x)
x = SubPixel1D(x,2)
x = layers.Conv1D(64, 3, activation='relu')(x)
после того, как эта модель компиляции и подгонки будет работать? Если тензорный поток и керасы импортированы
import tensorflow as tf
from tensorflow import keras
аналогично пользовательской функции потерь в керасе. Если я определю пользовательскую функцию потерь следующим образом:
def my_loss(y_true, y_pred):
# compute l2 loss/ equal to Keras squared mean
sqrt_l2_loss = tf.reduce_mean((y_pred-y_true)**2, axis=[1, 2])
avg_sqrt_l2_loss = tf.reduce_mean(sqrt_l2_loss, axis=0)
return avg_sqrt_l2_loss
и использую tf. операции или функции, я могу просто передать эту функцию керасу как обычно? Могу ли я просто использовать его при потере Кераса?