Tensorflow 要检查Keras层内的中间操作吗
在卷积运算过程中,我将代码移植到仅支持半精度的嵌入式处理器上时,面临浮点分辨率损失的问题,因此我想测试在基于Keras的模型中逐层执行的中间操作,该模型在桌面上以全精度运行时表现良好 在下面的代码片段中,我想计算1500x3形状的输入数据上的1DConv。内核大小为10,内核形状为(10x3x16) 为了计算一维卷积,Keras在输入形状上展开维数,并向其再添加一个维数,这就适合于二维卷积运算Tensorflow 要检查Keras层内的中间操作吗,tensorflow,Tensorflow,在卷积运算过程中,我将代码移植到仅支持半精度的嵌入式处理器上时,面临浮点分辨率损失的问题,因此我想测试在基于Keras的模型中逐层执行的中间操作,该模型在桌面上以全精度运行时表现良好 在下面的代码片段中,我想计算1500x3形状的输入数据上的1DConv。内核大小为10,内核形状为(10x3x16) 为了计算一维卷积,Keras在输入形状上展开维数,并向其再添加一个维数,这就适合于二维卷积运算 Input_sequence = keras.layers.Input(shape=(1500,3))
Input_sequence = keras.layers.Input(shape=(1500,3))
encoder_conv1 = keras.layers.Conv1D(filters=16, kernel_size=10,
padding='same', use_bias=False,
activation=None)(Input_sequence)
然后调用一系列操作,例如Conv2D,然后是挤压,最后是biaadd。
最后,Conv1D层的输出被推入
conv1d_20/Elu层
请查看随附的图片,了解有关操作的完整说明
现在,我想在产生层的实际输出之前测试输出
请参阅以下代码:
Input_sequence = keras.layers.Input(shape=(1500,3))
encoder_conv1 = keras.layers.Conv1D(filters=16, kernel_size=10, padding='same', activation=tf.nn.elu)(Input_sequence)
模型摘要显示:
Model: "model_5"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_5 (InputLayer) [(None, 1500, 3)] 0
_________________________________________________________________
conv1d_20 (Conv1D) (None, 1500, 16) 496
我想在conv1d_20/Conv2D定义模型输出,但它给了我错误。但以下内容在汇编时被接受
encoder = keras.Model(inputs=autoencoder.input, outputs=autoencoder.get_layer('conv1d_20').output)
encoder.get_output_at(0)
它输出
<tf.Tensor 'conv1d_20/Elu:0' shape=(?, 1500, 16) dtype=float32>
我想测试Conv2D操作的输出,但它会生成conv1d_20/Elu的输出
我怎样做这个测试。请帮帮我
在定义Conv1D
操作时,您可以禁用偏差(use_bias=False
)和激活功能(activation=None
)
Input_sequence = keras.layers.Input(shape=(1500,3))
encoder_conv1 = keras.layers.Conv1D(filters=16, kernel_size=10,
padding='same', use_bias=False,
activation=None)(Input_sequence)