2017-06-27 44 views
0

我是張量流的新人,我正在訓練移動net_v1。要做到這一點,我首先從一個txt文件中創建的tfrecords'多類文件(例如:namefile LABEL1 LABEL2 ...)來自logits和檢查點的訓練模型

import sys, os 
import tensorflow as tf 
import cv2 
import numpy as np 
import matplotlib.pyplot as plt 
# function 

def load_image(addr): 
    # read an image and resize to (224, 224) 
    # cv2 load images as BGR, convert it to RGB 
    img = cv2.imread(addr) 
    img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_CUBIC) 
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
    img = img.astype(np.float32) 
    return img 

def _int64_feature(value): 
    return tf.train.Feature(int64_list=tf.train.Int64List(value=[*value])) 

def _bytes_feature(value): 
    return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value])) 

def loadData(inputs): 
    addrs = [] 
    labels = [] 
    f = open(inputs, 'r') 
    data = [ln.split(' ') for ln in f ] 
    f.close() 
    print(data) 
    for i in range(0, len(data)): 
     addrs.append(data[i][0].rstrip()) 
     l = [] 
     for j in range(1,len(data[i])): 
      if(data[i][j].rstrip().isdigit() == True): 
       l.append(int(data[i][j].rstrip())) 

     print(l) 
     labels.append(l) 

    return addrs, labels 

def CreateTrainFile(input_filename, train_filename,): 
    path = '/home/rd/Documents/RD2/Databases/Faces/' 
    # load file and label 
    train_addrs, train_labels = loadData(input_filename) 
    print(train_labels) 
    # open the TFRecords file 
    writer = tf.python_io.TFRecordWriter(train_filename) 
    for i in range(len(train_addrs)): 
     # print how many images are saved every 1000 images 
     if not i % 1000: 
      print('Train data: {}/{}'.format(i, len(train_addrs))) 
      sys.stdout.flush() 
     # Load the image 
     img = load_image(train_addrs[i]) 
     label = train_labels[i] 
     print('label : ', _int64_feature(label)) 
     # Create a feature 
     feature = {'train/label': _int64_feature(label), 
       'train/image': _bytes_feature(tf.compat.as_bytes(img.tostring()))} 
     # Create an example protocol buffer 
     example = tf.train.Example(features=tf.train.Features(feature=feature)) 

     # Serialize to string and write on the file 
     writer.write(example.SerializeToString()) 

    writer.close() 
    sys.stdout.flush() 

# open the TFRecords file 
def CreateValidationFile(val_filename): 

    writer = tf.python_io.TFRecordWriter(val_filename) 
    for i in range(len(val_addrs)): 
     # print how many images are saved every 1000 images 
     if not i % 1000: 
      print('Val data: {}/{}'.format(i, len(val_addrs))) 
      sys.stdout.flush() 
     # Load the image 
     img = load_image(val_addrs[i]) 
     label = val_labels[i] 
     # Create a feature 
     feature = {'val/label': _int64_feature(label), 
       'val/image': _bytes_feature(tf.compat.as_bytes(img.tostring()))} 
     # Create an example protocol buffer 
     example = tf.train.Example(features=tf.train.Features(feature=feature)) 
     # Serialize to string and write on the file 
     writer.write(example.SerializeToString()) 
    writer.close() 
    sys.stdout.flush() 

# open the TFRecords file 
def CreateTestFile(test_filename): 
    writer = tf.python_io.TFRecordWriter(test_filename) 
    for i in range(len(test_addrs)): 
     # print how many images are saved every 1000 images 
     if not i % 1000: 
      print('Test data: {}/{}'.format(i, len(test_addrs))) 
      sys.stdout.flush() 
     # Load the image 
     img = load_image(test_addrs[i]) 
     label = test_labels[i] 
     # Create a feature 
     feature = {'test/label': _int64_feature(label), 
       'test/image': _bytes_feature(tf.compat.as_bytes(img.tostring()))} 
     # Create an example protocol buffer 
     example = tf.train.Example(features=tf.train.Features(feature=feature)) 
     # Serialize to string and write on the file 
     writer.write(example.SerializeToString()) 
    writer.close() 
    sys.stdout.flush() 

def ReadRecordFileTrain(data_path): 
    #data_path = 'train.tfrecords' # address to save the hdf5 file 
    with tf.Session() as sess: 
     feature = {'train/image': tf.FixedLenFeature([], tf.string), 
       'train/label': tf.FixedLenFeature([], tf.int64)} 
     # Create a list of filenames and pass it to a queue 
     filename_queue = tf.train.string_input_producer([data_path], num_epochs=1) 
     # Define a reader and read the next record 
     reader = tf.TFRecordReader() 
     _, serialized_example = reader.read(filename_queue) 
     # Decode the record read by the reader 
     features = tf.parse_single_example(serialized_example, features=feature) 
     # Convert the image data from string back to the numbers 
     image = tf.decode_raw(features['train/image'], tf.float32) 

     # Cast label data into int32 
     label = tf.cast(features['train/label'], tf.int32) 
     # Reshape image data into the original shape 
     image = tf.reshape(image, [224, 224, 3]) 

     # Any preprocessing here ... 

     # Creates batches by randomly shuffling tensors 
     images, labels = tf.train.shuffle_batch([image, label], batch_size=2, capacity=30, num_threads=1, min_after_dequeue=10) 
     return images, labels 
def main(): 
    train_filename = 'train.tfrecords' # address to save the TFRecords file 
    #test_filename = 'test.tfrecords' # address to save the TFRecords file 
    #val_filename = 'val.tfrecords' # address to save the TFRecords file 
    CreateTrainFile("data.txt", train_filename) 
main() 

和讀取TF記錄:

def ReadRecordFileTrain(data_path): 
    #data_path = 'train.tfrecords' # address to save the hdf5 file 
    with tf.Session() as sess: 
     feature = {'train/image': tf.FixedLenFeature([], tf.string), 
       'train/label': tf.FixedLenFeature([2], tf.int64)} 
     # Create a list of filenames and pass it to a queue 
     filename_queue = tf.train.string_input_producer([data_path], num_epochs=1) 
     # Define a reader and read the next record 
     reader = tf.TFRecordReader() 
     _, serialized_example = reader.read(filename_queue) 
     # Decode the record read by the reader 
     features = tf.parse_single_example(serialized_example, features=feature) 
     # Convert the image data from string back to the numbers 
     image = tf.decode_raw(features['train/image'], tf.float32) 
     print('label1 :', features['train/label']) 
     # Cast label data into int32 
     label = tf.cast(features['train/label'], tf.int32) 
     print('label load:', label) 
     # Reshape image data into the original shape 
     image = tf.reshape(image, [224, 224, 3]) 

     # Any preprocessing here ... 

     # Creates batches by randomly shuffling tensors 
     images, labels = tf.train.batch([image, label], batch_size=2, capacity=30, num_threads=1) 
     return images, labels 

我想它可以工作,但我不確定(當我調用這些函數時,我沒有任何錯誤)。然後,我加載模型及其重量。調用損失函數並嘗試開始訓練,但此時失敗。

g = tf.Graph() 
with g.as_default(): 
    # size of the folder 
    inputs = tf.placeholder(tf.float32, [1, 224, 224, 3]) 

    # load dataset 
    images, labels = ReadRecordFileTrain('train.tfrecords') 
    print('load dataset done') 
    print('labels = ', labels) 
    print('data = ', images) 
    print(tf.shape(labels)) 

    # load network 
    network, end_points= mobilenet.mobilenet_v1(images, num_classes=2, depth_multiplier=0.25) 

    print('load network done') 
    print('network : ', network) 

    variables_to_restore = slim.get_variables_to_restore(exclude=["MobilenetV1/Logits/Conv2d_1c_1x1"]) 

    load_checkpoint = "modele_mobilenet_v1_025/mobilenet_v1_0.25_224.ckpt" 
    init_fn = slim.assign_from_checkpoint_fn(load_checkpoint, variables_to_restore) 
    print('custom network done') 



    # Specify the loss function: 
    tf.losses.softmax_cross_entropy(labels, network) 

    total_loss = tf.losses.get_total_loss() 
    #tf.scalar_summary('losses/total_loss', total_loss) 

    # Specify the optimization scheme: 
    optimizer = tf.train.GradientDescentOptimizer(learning_rate=.001) 

    # create_train_op that ensures that when we evaluate it to get the loss, 
    # the update_ops are done and the gradient updates are computed. 
    train_tensor = slim.learning.create_train_op(total_loss, optimizer) 
    print('loss and optimizer chosen') 
    # Actually runs training. 
    save_checkpoint = 'model/modelcheck' 

    # start training 
    learning = slim.learning.train(train_tensor, save_checkpoint, init_fn=init_fn, number_of_steps=1000) 

錯誤消息:

label1 : Tensor("ParseSingleExample/Squeeze_train/label:0", shape=(2,), dtype=int64) 
label load: Tensor("Cast:0", shape=(2,), dtype=int32) 
load dataset done 
labels = Tensor("batch:1", shape=(2, 2), dtype=int32) 
data = Tensor("batch:0", shape=(2, 224, 224, 3), dtype=float32) 
Tensor("Shape:0", shape=(2,), dtype=int32) 
load network done 
network : Tensor("MobilenetV1/Logits/SpatialSqueeze:0", shape=(2, 2), dtype=float32) 
custom network done 
loss and optimizer chosen 
Traceback (most recent call last): 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1039, in _do_call 
    return fn(*args) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1021, in _run_fn 
    status, run_metadata) 
File "/usr/lib/python3.5/contextlib.py", line 66, in __exit__ 
    next(self.gen) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py", line 466, in raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [1,1,256,2] rhs shape= [1,1,256,1] 
    [[Node: save_1/Assign_109 = Assign[T=DT_FLOAT, _class=["loc:@MobilenetV1/Logits/Conv2d_1c_1x1/weights"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/cpu:0"](MobilenetV1/Logits/Conv2d_1c_1x1/weights, save_1/RestoreV2_109)]] 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
File "test.py", line 106, in <module> 
    main() 
File "test.py", line 103, in main 
    learning = slim.learning.train(train_tensor, save_checkpoint, init_fn=init_fn, number_of_steps=1000) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/slim/python/slim/learning.py", line 725, in train 
    master, start_standard_services=False, config=session_config) as sess: 
File "/usr/lib/python3.5/contextlib.py", line 59, in __enter__ 
    return next(self.gen) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/supervisor.py", line 960, in managed_session 
    self.stop(close_summary_writer=close_summary_writer) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/supervisor.py", line 788, in stop 
    stop_grace_period_secs=self._stop_grace_secs) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/coordinator.py", line 389, in join 
    six.reraise(*self._exc_info_to_raise) 
File "/usr/lib/python3/dist-packages/six.py", line 686, in reraise 
    raise value 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/supervisor.py", line 949, in managed_session 
    start_standard_services=start_standard_services) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/supervisor.py", line 706, in prepare_or_wait_for_session 
    init_feed_dict=self._init_feed_dict, init_fn=self._init_fn) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/session_manager.py", line 256, in prepare_session 
    config=config) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/session_manager.py", line 188, in _restore_checkpoint 
    saver.restore(sess, ckpt.model_checkpoint_path) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 1457, in restore 
    {self.saver_def.filename_tensor_name: save_path}) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 778, in run 
    run_metadata_ptr) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 982, in _run 
    feed_dict_string, options, run_metadata) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1032, in _do_run 
    target_list, options, run_metadata) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1052, in _do_call 
    raise type(e)(node_def, op, message) 
tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [1,1,256,2] rhs shape= [1,1,256,1] 
    [[Node: save_1/Assign_109 = Assign[T=DT_FLOAT, _class=["loc:@MobilenetV1/Logits/Conv2d_1c_1x1/weights"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/cpu:0"](MobilenetV1/Logits/Conv2d_1c_1x1/weights, save_1/RestoreV2_109)]] 

Caused by op 'save_1/Assign_109', defined at: 
File "test.py", line 106, in <module> 
    main() 
File "test.py", line 103, in main 
    learning = slim.learning.train(train_tensor, save_checkpoint, init_fn=init_fn, number_of_steps=1000) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/slim/python/slim/learning.py", line 642, in train 
    saver = saver or tf_saver.Saver() 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 1056, in __init__ 
    self.build() 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 1086, in build 
    restore_sequentially=self._restore_sequentially) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 691, in build 
    restore_sequentially, reshape) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 419, in _AddRestoreOps 
    assign_ops.append(saveable.restore(tensors, shapes)) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/training/saver.py", line 155, in restore 
    self.op.get_shape().is_fully_defined()) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/state_ops.py", line 270, in assign 
    validate_shape=validate_shape) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_state_ops.py", line 47, in assign 
    use_locking=use_locking, name=name) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py", line 768, in apply_op 
    op_def=op_def) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 2336, in create_op 
    original_op=self._default_original_op, op_def=op_def) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 1228, in __init__ 
    self._traceback = _extract_stack() 

InvalidArgumentError (see above for traceback): Assign requires shapes of both tensors to match. lhs shape= [1,1,256,2] rhs shape= [1,1,256,1] 
    [[Node: save_1/Assign_109 = Assign[T=DT_FLOAT, _class=["loc:@MobilenetV1/Logits/Conv2d_1c_1x1/weights"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/cpu:0"](MobilenetV1/Logits/Conv2d_1c_1x1/weights, save_1/RestoreV2_109)]] 

我不明白問題出在哪裏的來源和如何解決它。

+0

我曾經得到這個錯誤,當我在模型中保存目錄模型與我的當前運行模式的衝突。嘗試刪除模型目錄並重新開始訓練。 –

+0

謝謝,它解決了這個問題! – Shiro

回答

0

InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [1,1,256,2] rhs shape= [1,1,256,1]

我曾經得到這個錯誤,當我在模型中保存目錄模型與我的當前運行模式的衝突。嘗試刪除模型目錄並重新開始訓練。

0

它似乎解決了錯誤,但現在,當我想用​​tf.Session執行它時,它失敗了。我想知道如果問題來自我的圖或我在tf.Session中做錯了什麼?

def evaluation(logits, labels): 

    with tf.name_scope('Accuracy'): 
# Operation comparing prediction with true label 
     correct_prediction = tf.equal(tf.argmax(logits,1), tf.argmax(labels, 1)) 

# Operation calculating the accuracy of the predictions 
     accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) 

# Summary operation for the accuracy 
#tf.scalar_summary('train_accuracy', accuracy) 
     return accuracy 


g = tf.Graph() 
with g.as_default(): 
    # size of the folder 
    inputs = tf.placeholder(tf.float32, [1, 224, 224, 3]) 

    # load dataset 
    images, labels = ReadRecordFileTrain('train.tfrecords') 
    print('load dataset done') 
    print('labels = ', labels) 
    print('data = ', images) 
    print(tf.shape(labels)) 

    # load network 
    network, end_points= mobilenet.mobilenet_v1(images, num_classes=2, depth_multiplier=0.25) 

    print('load network done') 
    print('network : ', network) 

    variables_to_restore = slim.get_variables_to_restore(exclude=["MobilenetV1/Logits/Conv2d_1c_1x1"]) 

    load_checkpoint = "modele_mobilenet_v1_025/mobilenet_v1_0.25_224.ckpt" 
    init_fn = slim.assign_from_checkpoint_fn(load_checkpoint, variables_to_restore) 
    print('custom network done') 



    # Specify the loss function: 
    tf.losses.softmax_cross_entropy(labels, network) 

    total_loss = tf.losses.get_total_loss() 
    #tf.scalar_summary('losses/total_loss', total_loss) 

    # Specify the optimization scheme: 
    optimizer = tf.train.GradientDescentOptimizer(learning_rate=.001) 

    # create_train_op that ensures that when we evaluate it to get the loss, 
    # the update_ops are done and the gradient updates are computed. 
    train_tensor = slim.learning.create_train_op(total_loss, optimizer) 
    print('loss and optimizer chosen') 
    # Actually runs training. 
    save_checkpoint = 'model/modelcheck' 

    # start training 
    learning = slim.learning.train(train_tensor, save_checkpoint, init_fn=init_fn, number_of_steps=1000) 

    accuracy = evaluation(network, labels) 


with tf.Session(graph=g) as sess: 
    sess.run(network) 
    print('network load') 
    sess.run(total_loss) 
    sess.run(accuracy) 
    sess.run(train_tensor) 
    sess.run(learning) 

錯誤:

label1 : Tensor("ParseSingleExample/Squeeze_train/label:0", shape=(2,), dtype=int64) 
label load: Tensor("Cast:0", shape=(2,), dtype=int32) 
load dataset done 
labels = Tensor("batch:1", shape=(4, 2), dtype=int32) 
data = Tensor("batch:0", shape=(4, 224, 224, 3), dtype=float32) 
Tensor("Shape:0", shape=(2,), dtype=int32) 
load network done 
network : Tensor("MobilenetV1/Logits/SpatialSqueeze:0", shape=(4, 2), dtype=float32) 
custom network done 
loss and optimizer chosen 
end of graph 
Traceback (most recent call last): 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1039, in _do_call 
    return fn(*args) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1021, in _run_fn 
    status, run_metadata) 
File "/usr/lib/python3.5/contextlib.py", line 66, in __exit__ 
    next(self.gen) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/errors_impl.py", line 466, in raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta 
    [[Node: MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta/read = Identity[T=DT_FLOAT, _class=["loc:@MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta"], _device="/job:localhost/replica:0/task:0/cpu:0"](MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta)]] 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
File "test.py", line 113, in <module> 
    main() 
File "test.py", line 105, in main 
    sess.run(network) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 778, in run 
    run_metadata_ptr) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 982, in _run 
    feed_dict_string, options, run_metadata) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1032, in _do_run 
    target_list, options, run_metadata) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1052, in _do_call 
    raise type(e)(node_def, op, message) 
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta 
    [[Node: MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta/read = Identity[T=DT_FLOAT, _class=["loc:@MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta"], _device="/job:localhost/replica:0/task:0/cpu:0"](MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta)]] 

Caused by op 'MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta/read', defined at: 
File "test.py", line 113, in <module> 
    main() 
File "test.py", line 67, in main 
    network, end_points= mobilenet.mobilenet_v1(images, num_classes=2, depth_multiplier=0.25) 
File "/home/rd/Documents/RD2/users/Ludovic/tensorflow_mobilenet/mobilenet_v1.py", line 301, in mobilenet_v1 
    conv_defs=conv_defs) 
File "/home/rd/Documents/RD2/users/Ludovic/tensorflow_mobilenet/mobilenet_v1.py", line 228, in mobilenet_v1_base 
    scope=end_point) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args 
    return func(*args, **current_args) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1891, in separable_convolution2d 
    outputs = normalizer_fn(outputs, **normalizer_params) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args 
    return func(*args, **current_args) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 528, in batch_norm 
    outputs = layer.apply(inputs, training=is_training) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/layers/base.py", line 320, in apply 
    return self.__call__(inputs, **kwargs) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/layers/base.py", line 286, in __call__ 
    self.build(input_shapes[0]) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/layers/normalization.py", line 125, in build 
    trainable=True) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variable_scope.py", line 1049, in get_variable 
    use_resource=use_resource, custom_getter=custom_getter) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variable_scope.py", line 948, in get_variable 
    use_resource=use_resource, custom_getter=custom_getter) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variable_scope.py", line 349, in get_variable 
    validate_shape=validate_shape, use_resource=use_resource) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variable_scope.py", line 1389, in wrapped_custom_getter 
    *args, **kwargs) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/layers/base.py", line 275, in variable_getter 
    variable_getter=functools.partial(getter, **kwargs)) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/layers/base.py", line 228, in _add_variable 
    trainable=trainable and self.trainable) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variable_scope.py", line 1389, in wrapped_custom_getter 
    *args, **kwargs) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1334, in layer_variable_getter 
    return _model_variable_getter(getter, *args, **kwargs) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1326, in _model_variable_getter 
    custom_getter=getter, use_resource=use_resource) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args 
    return func(*args, **current_args) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/variables.py", line 262, in model_variable 
    use_resource=use_resource) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args 
    return func(*args, **current_args) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/variables.py", line 217, in variable 
    use_resource=use_resource) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1334, in layer_variable_getter 
    return _model_variable_getter(getter, *args, **kwargs) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1326, in _model_variable_getter 
    custom_getter=getter, use_resource=use_resource) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args 
    return func(*args, **current_args) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/variables.py", line 262, in model_variable 
    use_resource=use_resource) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args 
    return func(*args, **current_args) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/contrib/framework/python/ops/variables.py", line 217, in variable 
    use_resource=use_resource) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variable_scope.py", line 341, in _true_getter 
    use_resource=use_resource) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variable_scope.py", line 714, in _get_single_variable 
    validate_shape=validate_shape) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variables.py", line 197, in __init__ 
    expected_shape=expected_shape) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/variables.py", line 316, in _init_from_args 
    self._snapshot = array_ops.identity(self._variable, name="read") 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/ops/gen_array_ops.py", line 1338, in identity 
    result = _op_def_lib.apply_op("Identity", input=input, name=name) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/op_def_library.py", line 768, in apply_op 
    op_def=op_def) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 2336, in create_op 
    original_op=self._default_original_op, op_def=op_def) 
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py", line 1228, in __init__ 
    self._traceback = _extract_stack() 

FailedPreconditionError (see above for traceback): Attempting to use uninitialized value MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta 
    [[Node: MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta/read = Identity[T=DT_FLOAT, _class=["loc:@MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta"], _device="/job:localhost/replica:0/task:0/cpu:0"](MobilenetV1/Conv2d_3_depthwise/BatchNorm/beta)]] 
+0

你的代碼是否在某處共享? –

+0

我編輯過,這是以前的代碼。 – Shiro