相关疑难解决方法(0)

使用 Tensorflow 2 中保存的模型进行推理:如何控制输入/输出?

将我的代码从 TF1 调整为 TF2.6 我遇到了麻烦。我正在尝试向 inception resnet 添加一些自定义层,保存模型,然后加载并运行它。

from tensorflow.keras.layers import Dense                                                                                                                       
from tensorflow.keras.models import Model                                                                                                                       
from tensorflow.keras.applications.inception_resnet_v2 import InceptionResNetV2                                                                                 
from tensorflow.keras.layers import Dense, GlobalAveragePooling2D                                                                                               
import tensorflow as tf                                                                                                                                         
import numpy as np                                                                                                                                              
from PIL import Image                                                                                                                                           
                                                                                                                                                                
export_path = "./save_test"                                                                                                                                     
                                                                                                                                                                
# Get model without top and add two layers                                                                                                                      
base_model = InceptionResNetV2(weights='imagenet', input_tensor=None, include_top=False)                                                                        
out = base_model.output                                                                                                                                         
out = GlobalAveragePooling2D()(out)                                                                                                                             
predictions = Dense(7, activation='softmax', name="output")(out)                                                                                                
                                                                                                                                                                
# Make new model using inputs from base model and custom outputs                                                                                                
model = Model(inputs=base_model.input, …
Run Code Online (Sandbox Code Playgroud)

python machine-learning keras tensorflow tensorflow2.0

12
推荐指数
1
解决办法
2301
查看次数

TensorFlow检查点保存并读取

我有一个基于TensorFlow的神经网络和一组变量.

培训功能如下:

def train(load = True, step)
    """
    Defining the neural network is skipped here
    """

    train_step = tf.train.AdamOptimizer(1e-4).minimize(mse)
    # Saver
    saver = tf.train.Saver()

    if not load:
        # Initalizing variables
        sess.run(tf.initialize_all_variables())
    else:
        saver.restore(sess, 'Variables/map.ckpt')
        print 'Model Restored!'

    # Perform stochastic gradient descent
    for i in xrange(step):
        train_step.run(feed_dict = {x: train, y_: label})

    # Save model
    save_path = saver.save(sess, 'Variables/map.ckpt')
    print 'Model saved in file: ', save_path
    print 'Training Done!'
Run Code Online (Sandbox Code Playgroud)

我正在调用这样的训练函数:

# First train
train(False, 1)
# Following train
for i …
Run Code Online (Sandbox Code Playgroud)

python io tensorflow

5
推荐指数
1
解决办法
9147
查看次数

同时运行多个预先训练的Tensorflow网络

我想做的是同时运行多个预先训练好的Tensorflow网.因为每个网络中的一些变量的名称可以是相同的,所以常见的解决方案是在创建网络时使用名称范围.但问题是我训练了这些模型并将训练过的变量保存在几个检查点文件中.在创建网络时使用名称范围后,我无法从检查点文件加载变量.

例如,我训练了一个AlexNet,我想比较两组变量,一组来自纪元10(保存在文件epoch_10.ckpt中),另一组来自纪元50(保存在文件epoch_50中). CKPT).因为这两者是完全相同的网,所以内部变量的名称是相同的.我可以使用创建两个网

with tf.name_scope("net1"):
    net1 = CreateAlexNet()
with tf.name_scope("net2"):
    net2 = CreateAlexNet()
Run Code Online (Sandbox Code Playgroud)

但是,我无法从.ckpt文件加载训练过的变量,因为当我训练这个网时,我没有使用名称范围.即使我在训练网络时可以将名称范围设置为"net1",这也可以防止我加载net2的变量.

我试过了:

with tf.name_scope("net1"):
    mySaver.restore(sess, 'epoch_10.ckpt')
with tf.name_scope("net2"):
    mySaver.restore(sess, 'epoch_50.ckpt')
Run Code Online (Sandbox Code Playgroud)

这不起作用.

解决这个问题的最佳方法是什么?

python tensorflow

5
推荐指数
1
解决办法
2888
查看次数

标签 统计

python ×3

tensorflow ×3

io ×1

keras ×1

machine-learning ×1

tensorflow2.0 ×1