好消息我想出了这个,并将为后代保留解决方案。
我需要用tf.restore_default_graph()开始我的脚本
我正处于在Tensorflow中编写GAN的开始阶段,关于我是否打算重用变量,我收到了一个奇怪的错误消息。它基本上是在说(我认为)我试图为我的一个卷积定义一次内核。附带代码和错误。谢谢!
import tensorflow as tf
import numpy as np
import os
from definitions import *
"""
HYPERPARAMETERS
"""
BATCH_SIZE = 10 #number of slices in the batches fed to Discrim
NUM_STEPS = 100 #number of iterations before we save
GEN_LR = 1e-5
DIS_LR = 1e-5
EPS = 1e-10
KERNEL = 3
x=tf.placeholder(tf.float32,shape=[BATCH_SIZE,256,256,1],name='GenInput')
y=tf.placeholder(tf.float32,shape=[BATCH_SIZE,256,256,1],name='GenOutput')
#label=tf.placeholder(tf.int32, name='IsReal') #1=real 0=generated
#whole_dataset=Dataset2D('/Users/Karl/Inputs/training set/DEC-MRI_training','/Users/Karl/Inputs/training set/ROI_Liu_modified/')
def gen(x):
with tf.variable_scope('GenBlk1'):
with tf.variable_scope('conv1'):
conv1=tf.layers.conv2d(x, 32, (KERNEL, KERNEL), strides=(1, 1), padding="same")
conv1=tf.nn.relu(conv1)
with tf.variable_scope('conv2'):
conv2=tf.layers.conv2d(conv1, 32, (KERNEL, KERNEL), strides=(1, 1), padding="same")
conv2=tf.nn.relu(conv2)
with tf.variable_scope('conv3'):
conv3=tf.layers.conv2d(conv2, 5, (KERNEL, KERNEL), strides=(1, 1), padding="same")
conv3=tf.nn.relu(conv3)
#xp=tf.layers.max_pooling2d(inputs, pool_size,strides,padding='valid')
return conv3
def discriminator(y):
with tf.variable_scope('DisBlk1'):
y=tf.layers.conv2d(y, 32, (KERNEL, KERNEL), strides=(1, 1), padding="same")
y=tf.nn.relu(y)
y=tf.layers.conv2d(y, 32, (KERNEL, KERNEL), strides=(1, 1), padding="same")
y=tf.nn.relu(y)
y=tf.layers.conv2d(y, 32, (KERNEL, KERNEL), strides=(1, 1), padding="same")
y=tf.nn.relu(y)
y=tf.layers.dense(y,2)
#xp=tf.layers.max_pooling2d(inputs, pool_size,strides,padding='valid')
return y
def main(x,whole_dataset):
#ops
pred = gen(x)
discrim_fake = discriminator(predict)
#discrim_real = discriminator(y)
#gLoss= =
#summaries
with tf.name_scope("generator_output"):
tf.summary.image("outputs", pred)
tf.summary.scalar("discriminator_loss", dLoss)
tf.summary.scalar("generator_loss_GAN", gLoss)
for var in tf.trainable_variables():
tf.summary.histogram(var.op.name + "/values", var)
saver = tf.train.Saver(max_to_keep=10)
GLOBAL_STEP=0
#with tf.Session() as sess:
# while True: #main loop
main(x,whole_dataset)
这是错误:
runfile('/Users/Karl/Research/NNStuff/GAN_breast/main.py', wdir='/Users/Karl/Research/NNStuff/GAN_breast')
Reloaded modules: definitions
Traceback (most recent call last):
File "<ipython-input-74-b7a187cb0f1a>", line 1, in <module>
runfile('/Users/Karl/Research/NNStuff/GAN_breast/main.py', wdir='/Users/Karl/Research/NNStuff/GAN_breast')
File "/Users/Karl/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 880, in runfile
execfile(filename, namespace)
File "/Users/Karl/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/Users/Karl/Research/NNStuff/GAN_breast/main.py", line 77, in <module>
main(x,whole_dataset)
File "/Users/Karl/Research/NNStuff/GAN_breast/main.py", line 63, in main
tf.summary.image("outputs", gen(x))
File "/Users/Karl/Research/NNStuff/GAN_breast/main.py", line 31, in gen
conv1=tf.layers.conv2d(x, 32, (KERNEL, KERNEL), strides=(1, 1), padding="same")
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/layers/convolutional.py", line 551, in conv2d
return layer.apply(inputs)
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/layers/base.py", line 503, in apply
return self.__call__(inputs, *args, **kwargs)
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/layers/base.py", line 443, in __call__
self.build(input_shapes[0])
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/layers/convolutional.py", line 137, in build
dtype=self.dtype)
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/layers/base.py", line 383, in add_variable
trainable=trainable and self.trainable)
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 1065, in get_variable
use_resource=use_resource, custom_getter=custom_getter)
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 962, in get_variable
use_resource=use_resource, custom_getter=custom_getter)
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 367, in get_variable
validate_shape=validate_shape, use_resource=use_resource)
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 352, in _true_getter
use_resource=use_resource)
File "/Users/Karl/anaconda/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 664, in _get_single_variable
name, "".join(traceback.format_list(tb))))
ValueError: Variable GenBlk1/conv1/conv2d/kernel already exists, disallowed. Did you mean to set reuse=True in VarScope? Originally defined at:
File "/Users/Karl/Research/NNStuff/GAN_breast/main.py", line 30, in generator
with tf.variable_scope('conv1'):
File "/Users/Karl/Research/NNStuff/GAN_breast/main.py", line 55, in main
#ops
File "/Users/Karl/Research/NNStuff/GAN_breast/main.py", line 77, in <module>
main(x,whole_dataset)