【发布时间】:2020-03-03 19:43:52
【问题描述】:
我对 tf 2.0 中的 tf.keras 和 tf 函数有疑问。 如果我有这样的模型:
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)
我想添加一个像这样的自定义函数,它是一个 1D 子像素层:
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
我可以在没有问题的情况下将这一层包含在 keras 中吗?由于 tensorflow 2.0 比以前的 tensorflow 版本容易得多,如果这不会混淆后端和会话,我不确定吗?
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)
之后编译和拟合模型会起作用吗?如果 导入了tensorflow和keras
import tensorflow as tf
from tensorflow import keras
类似于 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.操作或函数,我可以像往常一样将此函数传递给 keras 吗? 我可以在 Keras loss 中使用它吗?
【问题讨论】:
标签: python tensorflow keras tensorflow2.0 tf.keras