首页 > 解决方案 > 如何将密集层从 Tensorflow 1 迁移到 Tensorflow 2?

问题描述

我如何将此层迁移到 tf2

observations = tf.placeholder(tf.float32,[None, OBSERVATIONS_SIZE])

h = tf.layers.dense(
     observations,
     units=hidden_layer_size,
     activation=tf.nn.relu,
     kernel_initializer=tf.contrib.layers.xavier_initializer()
)

我发现占位符现在是“输入”,我将密集层用于 tf2

我试过:

observations = tf.keras.Input(
    shape = [ None, OBSERVATIONS_SIZE ],
    dtype = tf.float32
)

h = tf.keras.layers.Dense(
     observations,
     units=hidden_layer_size,
     activation='relu',
     kernel_initializer = 'glorot_uniform'
)

如果我使用它,我会收到此错误

TypeError: __init__() got multiple values for argument 'units'

在这种情况下我应该如何使用占位符/输入?

标签: pythontensorflowkeras

解决方案


Keras 层不用作tf.layers,它们是可调用的,而不是将张量作为第一个参数传递,所以它应该是:

observations = tf.keras.Input(
    shape = [ None, OBSERVATIONS_SIZE ],
    dtype = tf.float32
    )

h = tf.keras.layers.Dense(
     units=hidden_layer_size,
     activation='relu',
     kernel_initializer = 'glorot_uniform'
     )(observations)

推荐阅读