в последнее время я играл с CNN, написанными в Керасе, TF. К сожалению, я столкнулся с одной проблемой:
В этих великолепных руководствах (https://github.com/Hvass-Labs/TensorFlow-Tutorials/blob/master/vgg16.py; остальной код здесь), что я очень рекомендую, маэстро загружает предварительно обученную модель vgg16.tf очень и очень уродливо.
def __init__(self):
# Now load the model from file. The way TensorFlow
# does this is confusing and requires several steps.
# Create a new TensorFlow computational graph.
self.graph = tf.Graph()
# Set the new graph as the default.
with self.graph.as_default():
# TensorFlow graphs are saved to disk as so-called Protocol Buffers
# aka. proto-bufs which is a file-format that works on multiple
# platforms. In this case it is saved as a binary file.
# Open the graph-def file for binary reading.
path = os.path.join(data_dir, path_graph_def)
with tf.gfile.FastGFile(path, 'rb') as file:
# The graph-def is a saved copy of a TensorFlow graph.
# First we need to create an empty graph-def.
graph_def = tf.GraphDef()
# Then we load the proto-buf file into the graph-def.
graph_def.ParseFromString(file.read())
# Finally we import the graph-def to the default TensorFlow graph.
tf.import_graph_def(graph_def, name='')
# Now self.graph holds the VGG16 model from the proto-buf file.
# Get a reference to the tensor for inputting images to the graph.
self.input = self.graph.get_tensor_by_name(self.tensor_name_input_image)
# Get references to the tensors for the commonly used layers.
self.layer_tensors = [self.graph.get_tensor_by_name(name + ":0") for name in self.layer_names]
И проблема в том, что я хочу, чтобы моя собственная предварительно обученная модель загружалась таким же / похожим образом, поэтому я могу поместить модель в граф класса, который я вызываю позже, и, если возможно, получить последние строки кода здесь работающими . (Имеется в виду получение тензоров требуемых слоев из графика.)
Все мои попытки основаны на load_model, импортированном из keras и comp. Граф подвел меня. Также я не хотел загружать его совершенно по-другому, потому что мне пришлось бы потом менять МНОГО кода - для новичков большая проблема.
Хорошо, я надеюсь, что вопрос дойдет до нужного человека, а также что для вас он не будет слишком тривиальным: D.
Кстати: сложная проблема, которую я решаю, для вас - это перенос стилей также в том же репозитории github. (https://github.com/Hvass-Labs/TensorFlow-Tutorials/blob/master/15_Style_Transfer.ipynb)