【问题标题】:Tensorflow 2.0 tf.keras.layers.Conv2D unable to take input imagesTensorflow 2.0 tf.keras.layers.Conv2D 无法获取输入图像
【发布时间】:2019-09-16 03:07:39
【问题描述】:

尝试使用 Keras API 在 Tensorflow 2.0 中定义模型。第一层是一个二维卷积层,输入 RGB 图像的维度为 (127, 127),如下面的代码所示。实际上,我正在尝试在 TF 2.x 中实现 3D-R2N2,并且在某些进程中会有分支,因此 tf.keras.Sequential() 根本没有帮助。

试图从他们的(Google TF)文档中找到一些关于 rc2.0 的线索,但它太坏了。 input_shape=(127,127,3) 是 Conv2D 文档建议的,但它根本没有任何贡献。在文档上搜索。总是与糟糕的 1.x 版本混淆,似乎他们根本没有准备好发布。由于某些原因,请接受我必须在 TF 2.x 上尝试。

其他人可以帮忙吗?

ims = tf.convert_to_tensor(value=images[0])
ims = tf.reshape(ims,[-1,127,127,3])
#ims = ims.numpy() #ims.eval()#

# tf.disable_eager_execution()

#####################################################################################################################
# Define the layers of the Model

# Define the input layer
inputs = tf.keras.Input(shape=(127,127,3))

# n_convfilter[0] = 96, n_convfilter[1] = 128 ...
conv1 = tf.keras.layers.Conv2D(input_shape=(127, 127, 3), filters=[7, 7, 3, n_convfilter[0]], kernel_size=[7,7], kernel_initializer=tf.initializers.VarianceScaling(2.0), strides=[1,1], bias_initializer='zeros', padding="same", data_format="channels_last")(inputs)
conv1 = tf.keras.layers.MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='same')(conv1)
conv1 = tf.keras.layers.LeakyReLU(alpha=0.01)(conv1)

# Convolutional Layer #2
conv2 = tf.keras.layers.Conv2D( filters=[3,3,n_convfilter[0],n_convfilter[1]], kernel_size=[3,3], kernel_initializer=tf.initializers.VarianceScaling(2.0), strides=[1,1], bias_initializer='zeros', padding="SAME")(conv1)
conv2 = tf.keras.layers.MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='same')(conv2)
conv2 = tf.keras.layers.LeakyReLU(alpha=0.01)(conv2)
...
# conv_i to branches and merge back
branch0 =  tf.keras.layers.Dense(8192, activation=tf.nn.leaky_relu, use_bias=True )( conv_i )
branch0 = tf.reshape(branch0, [4, 4, 4, -1, 128]) 

branch1 =  tf.keras.layers.Dense(8192, activation=tf.nn.leaky_relu, use_bias=True )( conv_i )
branch1 = tf.reshape(branch1, [4, 4, 4, -1, 128]) 

...
branch_m =  tf.keras.layers.Dense(8192, activation=tf.nn.leaky_relu, use_bias=True )( conv_i )
branch_m = tf.reshape(branch_m, [4, 4, 4, -1, 128]) 

# Merges with HyperParams
merge0 = tf.keras.layers.Conv3d(HyperParams, weights['for_branch0'], strides=[1, 1, 1, 1, 1], padding="SAME") + branch0
merge0 = tf.add(merge0, biases['for_branch0']) 
merge0_gate = tf.sigmoid(merge0)
...
--> conv1 = tf.keras.layers.Conv2D(filters=[7, 7, 3, n_convfilter[0]], kernel_size=[7,7], strides=[1,1], padding="same", data_format="channels_last", kernel_initializer=tf.initializers.VarianceScaling(2.0), bias_initializer='zeros', input_shape=(127, 127, 3))(inputs)

TypeError: int() argument must be a string or a number, not 'ListWrapper'

【问题讨论】:

    标签: tensorflow2.0


    【解决方案1】:

    问题已解决。由一位天才朋友指出我在论点上的错误。

    filters 不再是 TF 2.x 中的张量

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      相关资源
      最近更新 更多