【发布时间】:2021-05-22 17:37:51
【问题描述】:
当我使用 tf.kears.layer 功能 API 构建我的实验模型时,我得到了 GraphDisconnected 错误,如下所示:
ValueError Traceback(最近调用 最后)
在 () 35 个输出 = x 36 ---> 37 模型 = tf.keras.Model(输入=输入,输出=输出) 38 模型.summary()
4 帧
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/functional.py 在_map_graph_network(输入,输出) 988 '以下前几层 ' 989 '被访问没有问题:' + --> 990 str(layers_with_complete_input)) 991 for x in nest.flatten(node.outputs): 第992章
ValueError: Graph disconnected: cannot get value for tensor Tensor("input_63:0", shape=(?, 32, 32, 32), dtype=float32) 在层 “tf_op_layer_Pow_105”。访问了以下先前的层 没有问题:[]
为了理解这个错误,我查看了可能的 SO 帖子,但无法删除该错误。我认为这是因为某些层的形状不匹配。我仔细检查了每一层的形状,但错误仍然存在。我不确定是什么导致了问题。任何人都可以提出解决此错误的可能想法吗?有什么快速解决办法吗?
更新:我的完整编码尝试:
def my_func(x):
n = 2
c = tf.constant([1, -1/6], dtype=tf.float32)
p = tf.constant([1,3], dtype=tf.float32)
W,H, C = x.shape[1:].as_list()
inputs = tf.keras.Input(shape=(W,H,C))
xx = inputs
res = []
for i in range(n):
m = c[i] * tf.math.pow(xx, p[i])
res.append(m)
csum = tf.math.cumsum(res)
csum_tr = tf.transpose(csum, perm=[1, 2, 3, 4, 0])
new_x = tf.reshape(csum_tr, tf.constant([-1, W, H, C*n]))
return new_x
inputs = tf.keras.Input(shape=(32,32,3))
conv_1 = Conv2D(64, kernel_size = (3, 3), padding='same')(inputs)
BN_1 = BatchNormalization(axis=-1)(conv_1)
pool_1 = MaxPooling2D(strides=(1,1), pool_size=(3,3), padding='same')(BN_1)
z0 = my_func(pool_1)
conv_2 = Conv2D(64, kernel_size = (3, 3), padding='same')(z0)
BN_2 = BatchNormalization(axis=-1)(conv_2)
pool_2 = MaxPooling2D(strides=(1,1), pool_size=(3,3), padding='same')(BN_2)
z1 = my_func(pool_2)
merged_2 = concatenate([z0, z1], axis=-1)
act_2 = Activation('tanh')(merged_2)
x = Conv2D(64, kernel_size = (3, 3), padding='same', activation='relu')(act_2)
x = BatchNormalization(axis=-1)(x)
x = Activation('relu')(x)
x = MaxPooling2D(pool_size=(3,3))(x)
x = Dropout(0.1)(x)
x = Flatten()(x)
x = Dense(128)(x)
x = BatchNormalization()(x)
x = Activation('tanh')(x)
x = Dropout(0.1)(x)
x = Dense(10)(x)
x = Activation('softmax')(x)
outputs = x
model = tf.keras.Model(inputs=inputs, outputs=outputs)
model.summary()
谁能指出导致问题的原因?我应该如何修复上面的图表断开错误?有什么快速的想法吗?谢谢!
【问题讨论】:
标签: python tensorflow machine-learning keras deep-learning