如何使用Tensorflow slim Alexnet实现?



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

valid_predicitions = tf.nn.softmax(model(tf_validation_dataset((

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

值错误:变量 alexnet_v2/conv1/weights 已存在, 禁止。您的意思是设置重用=真还是重用=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))

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

您必须重构代码,以便只创建一次模型。 我想这意味着模型的输入应该是一个未指定批量大小的占位符(None(,以便您可以将正常的训练批次或完整的验证数据作为一个大批次传递它。

最新更新