>

케라 스와 텐서 플로우에서 간단한 모델을 만들어 pb 파일로 저장하는 실험을했습니다. 다음 명령을 실행할 때 텐서 플로 예제에는 기차 작업이 있지만 keras 예제에는 그렇지 않습니다.질문 : keras 모델에서 생성 된 tensorflow 그래프에서 열차 운행을 찾거나 추가했는지 확인하는 방법이 있습니까?

tf.get_default_graph().get_operations()

Tensorflow 예

import tensorflow as tf
x = tf.placeholder(tf.float32, shape=[None, 1, 1], name='input')
y = tf.placeholder(tf.float32, shape=[None, 1, 1], name='target')
y_ = tf.identity(tf.layers.dense(x, 1), name='output')
loss = tf.reduce_mean(tf.square(y_ - y), name='loss')
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train_op = optimizer.minimize(loss, name='train')
init = tf.global_variables_initializer()
saver_def = tf.train.Saver().as_saver_def()
tf.get_default_graph().get_operations()

케 라스 예

import tensorflow as tf
from tensorflow.keras import layers
model = tf.keras.Sequential()
model.add(layers.GRU(20, input_shape=(10, 1), return_sequences=True, name='input'))
model.add(layers.Dense(1, activation='linear'))
model.compile(loss="mse", optimizer="adam")
model.summary()
init = tf.global_variables_initializer()
saver_def = tf.train.Saver().as_saver_def()
tf.get_default_graph().get_operations()

편집

다니엘 Möller에게 감사합니다. 달리기 훈련 후 그래프에 추가되었습니다. 그러나 항상 "train"을 사용하는 것으로 보이는 tensorflow 모델만큼 좋은 이름은 아닙니다. 케 라스 모델의 이름 "training/group_deps"가 tensorflow 그래프에 저장된 것을 발견했습니다.

훈련 이름과 목표 이름을 다음과 같이 입력 및 출력만큼 ​​쉽게 찾을 수 있다면 좋을 것입니다 :

model.input.name
model.output.name

그러나 내 문제는 해결 된 것처럼 보이지만 매번 그래프 파일을 파야합니다. 누군가가 더 쉬운 방법을 알고 있다면 감사하겠습니다. 목표는 tensorflows C API를 사용하여 네트워크를 실행하는 것입니다.

편집 2

tesorflow에서 summary_graph 도구를 찾았습니다. 그러나 초기 빌드 시도는 Windows의 베젤로 실패했습니다. 현재 다른 것들이 우선 순위이므로 더 이상 다루지 않았습니다.

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/graph_transforms # inspecting-graphs

  • 답변 # 1

    커뮤니티의 이익을 위해 아래 문제에 대한 해결책을 지금까지 언급했습니다.

    와이즈 비즈

    Keras Sequential model saved as tensorflow graph is missing train operation?

    명령 실행  명령을 사용하여모델을 저장하기 전에

    model.fit  

    saver_def = tf.train.Saver().as_saver_def() 에 대한 그래프에 훈련 작업을 포함

  • 답변 # 2

    @Tensorflow 지원에 대한 좋은 생각.

    케 라스 모델을 저장하기위한 올바른 순서를 찾았습니다. (적어도 나를 위해 일하고 있습니다). 내 설명은 아래 코드 블록의 주석에 있습니다.

    Keras Sequential Model
    
    

    위의 접근 방식을 TensorFlow C에 그래프를로드하여 추후 어느 시점에 배포 될 코드 세트에서 온라인으로 추론 및 교육을 실행하기 위해 자체 딥 러닝 코드와 함께 사용하고 있습니다. (위의 접근 방식을 주장하는 나의 확인은 tensorflow 1.15를 사용하는 내 환경에서 작동합니다)

    import tensorflow as tf from tensorflow.keras import layers model = tf.keras.Sequential() model.add(layers.GRU(20, input_shape=(10, 1), return_sequences=True, name='input')) model.add(layers.Dense(1, activation='linear')) model.compile(loss="mse", optimizer="adam") model.summary() # Calling fit to get the training operations added to the graph model.fit(input_data, target_data, validation_data=(input_vali, target_vali), batch_size=1, epochs=1) # Important to call init after training so that training can also be reinitialized later init = tf.global_variables_initializer() # Calling save after training like mentioned above saver_def = tf.train.Saver().as_saver_def() # Save graph as pb to be used later tf.train.write_graph(tf.get_default_graph(), "./", 'graph.pb', as_text=False) # Save as text file as operation names not directly accessible by keras (to my knowledge) may be needed. Example target & training tf.train.write_graph(tf.get_default_graph(), "./", 'graph.txt', as_text=True)

  • 이전 ReactJs의 componentDidMount에 새 컴포넌트 추가
  • 다음 replace - 큰 XML 파일에서 텍스트 분리