【问题标题】:Use an already trained neuronal network?使用已经训练好的神经网络?
【发布时间】:2019-10-20 04:29:51
【问题描述】:

我有一个已经训练好的神经网络,由文件 NNbiases_b1.csv、NNbiases_out.csv、NNweights_h1.csv 和 NNweights_out.csv 组成。输入和输出层的大小也是已知的。

现在我正在寻找一个使用此神经元网络的 Python 脚本,这意味着输出数据取决于输入数据和经过训练的网络。

但每当我搜索相关脚本时,我只能找到有关训练网络的操作方法和解释!

所以我的问题是:当我有一个已经训练好的具有上述数据/文件的网络时:我该如何使用这个神经元网络?

谢谢!

【问题讨论】:

  • 我绝对没有资格回答这个问题,但如果你想让别人回答,你需要更具体。你从哪里得到这些 csv 文件,它们是什么样的?另外,你想做什么?对图像进行分类?生成某种文本? keras 标签如何应用于此?您是想在 keras 中执行此操作,还是使用 keras 生成这些文件?所有这些都会影响答案。
  • @Addison 输入和输出数据都只是浮点数。数据来自 Keras,所以我想这也是在我的应用程序中使用它的最简单方法。顾名思义,它们包含 Keras 生成的 weights_h1、biases_b1、weights_out 和 biases_out 数据
  • @Addison 澄清这一点:CSV 文件包含由 model.get_weights() 提供的结果
  • 如果你想在 Keras 中保存模型权重,你应该使用model.save_weights()。这会将其保存为 HDF5 文件,您可以轻松加载。从 csv 文件加载这些值必须手动完成。使用model.save() 更容易,因为它也保存了模型结构。
  • @KurtisStreutker 好的,回到我原来的问题:如何使用以这种方式保存的模型?

标签: python keras deep-learning


【解决方案1】:

我认为您需要重建模型的架构,然后使用类似的方法手动设置每一层的权重:

all_weights = []
NNweights_h1 = [...] #load your csv of weights
NNbiases_b1 = [...] #load your csv of biases

all_weights.append(NNweights_h1)
all_weights.append(NNbiases_b1)

model.layers[i].set_weights(all_weights)

然后对你的所有层都这样做。

精度后更新

为了使用您的模型(虚拟示例):

  • 重构架构:

    def model(model_input):
    
    
        x = Dense(12, input_dim=8, activation='relu')(model_input)
        x = Dense(1, activation='sigmoid')(x)
    
        model = Model(model_input, x, name='Your_model')
    
        return model
    
  • 实例化它:

    X_test = [...] #load your data
    input_shape = [...] #your test data shape
    model_input = Input(shape=input_shape)
    model = model(model_input)
    
  • 使用答案开头的代码手动设置权重

  • 使用此模型来预测您的数据:

    prediction = model.predict(X_test)  #get the predictions of your model 
    

希望对你有帮助!

【讨论】:

  • 好的,这回答了加载神经网络的问题——但是我该如何使用它呢?意味着我如何应用我的输入数据以及我从哪里得到结果?
猜你喜欢
  • 2012-08-30
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 2010-11-20
  • 2019-09-15
相关资源
最近更新 更多