1

我正在尝试使用 Alexnet 的 tensorflow.contrib.slim 实现来解决图像分类问题。如果我尝试在没有以下代码行的情况下创建图形,则图形已成功创建。

有效预测= tf.nn.softmax(模型(tf_validation_dataset))

但是当我将此行添加到代码中时,出现以下错误

ValueError: 变量 alexnet_v2/conv1/weights 已经存在,不允许。您的意思是在 VarScope 中设置 reuse=True 或 reuse=tf.AUTO_REUSE 吗?

我也希望在一定次数的迭代后测试和验证数据的损失和准确性。我的完整代码如下

with graph.as_default():

tf_train_dataset = tf.placeholder(tf.float32, shape=(batchsize, height, width,channels))
tf_train_labels = tf.placeholder(tf.float32, shape=(batchsize, num_labels))
tf_validation_dataset = tf.constant(valid_dataset)
tf_test_dataset = tf.constant(test_dataset)

def model(data):
    with slim.arg_scope(alexnet.alexnet_v2_arg_scope()):
        outputs, end_points = alexnet.alexnet_v2(data,num_classes=num_labels)
    return outputs

logits = model(tf_train_dataset)
#calculate loss
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=tf_train_labels, logits=logits))
#optimization Step
optimizer = tf.train.AdamOptimizer(1e-4).minimize(loss)

#predictions for each dataset
train_predicitions = tf.nn.softmax(logits)
valid_predicitions = tf.nn.softmax(model(tf_validation_dataset))
4

1 回答 1

0

model()是一个在每次调用时创建 alexnet 的函数。第二次调用该函数时,错误消息告诉您 alexnet 中的变量之一已经创建,这是真的。

您必须重构代码,以便您只创建一次模型。我猜这意味着模型的输入应该是未指定批量大小的占位符None

于 2018-09-18T16:56:40.820 回答