【发布时间】: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