【问题标题】:How to use Tensorflow slim Alexnet Implementation?如何使用 Tensorflow slim Alexnet 实现?
【发布时间】:2019-02-22 17:57:23
【问题描述】:

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

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

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

ValueError: 变量 alexnet_v2/conv1/weights 已经存在, 不允许。你的意思是设置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))

【问题讨论】:

    标签: tensorflow tensorflow-slim


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      • 2021-02-19
      • 1970-01-01
      相关资源
      最近更新 更多