У меня есть сеть CNN в тензорном потоке.Я сохраняю модель и пытаюсь восстановить.Я прочитал довольно много предложений относительно сохранения и восстановления модели.Я был в состоянии сделать это для сети прямой связи, но CNN оказывается немного сложным.Ниже приведены некоторые фрагменты кода
1.Импорт данных (внешний источник)
2.Основной код CNN
def conv_net(a):
with tf.variable_scope("conv_cell", reuse=tf.AUTO_REUSE):
conv11 = tf.layers.conv1d(a, 50, 2, activation=tf.nn.relu, name='conv11')
conv1 = tf.layers.max_pooling1d(conv11, 2, 1, name='conv1'
conv21 = tf.layers.conv1d(conv1, 30, 2, activation=tf.nn.relu, name='conv21')
conv2 = tf.layers.max_pooling1d(conv21, 2, 1, name='conv2')
fc11 = tf.contrib.layers.flatten(conv2)
fc1 = tf.layers.dense(fc11, 180, name='conv3')
outputs1 = tf.layers.dense(fc1, timesteps/10, name='conv4')
outputs = tf.reshape(outputs1, [-1, 1])
return outputs
Y_Pred1 = conv_net(X)
Y_Pred = tf.reshape(Y_Pred1, [-1, TimeWindow, num_input])
Loss = tf.reduce_sum((Y - Y_Pred)**2)
optimizer = tf.train.AdamOptimizer(Learning_rate).minimize(Loss)
3.Основная сессия
with tf.Session() as sess:
sess.run(init)
saver = tf.train.Saver()
------------------------------------------ (повышение квалификации) ------------------------------------------------
save_path = saver.save(sess, './Save_Network/my_model')
print("Model saved in file: %s" % save_path)
4.Мой вопрос
Я не уверен, что это спасает.Поскольку я не определил вес и уклоны отдельно.Вес и уклоны определяются внутренне встроенной командой "tf.layers.conv1d". Я не знаю, как их восстановить.Я попытался следовать, чтобы восстановить и, как ожидалось, это не сработало.
with tf.Session() as sess:
new_saver = tf.train.import_meta_graph('./Save_Network/my_model.meta')
new_saver.restore(sess, tf.train.latest_checkpoint('./Save_Network'))
def conv_net(a):
conv11 = tf.layers.conv1d(a, 50, 2, activation=tf.nn.relu)
conv1 = tf.layers.max_pooling1d(conv11, 2, 1)
conv21 = tf.layers.conv1d(conv1, 30, 2, activation=tf.nn.relu)
conv2 = tf.layers.max_pooling1d(conv21, 2, 1)
fc11 = tf.contrib.layers.flatten(conv2)
fc1 = tf.layers.dense(fc11, 180)
outputs1 = tf.layers.dense(fc1, timesteps/10)
outputs = tf.reshape(outputs1, [-1, 1])
return outputs
Y_Pred1 = conv_net(X)
Y_Pred = tf.reshape(Y_Pred1, [-1, TimeWindow, num_input])
4.Я получаю ошибку FailedPreconditionError (см. Выше для отслеживания): Попытка использовать неинициализированное значение conv1d / kernel [[Узел: conv1d / kernel / read = IdentityT = DT_FLOAT, _device = "/ job: localhost / replica: 0 / task:0 / устройство: ЦП: 0" ]] * +1029 *
Я попытался инициализировать переменные с помощью init = tf.global_variables_initializer () sess.run (init)
Это не сработало.
Как получить доступ к этим весам иуклоны и восстановить их.