2016-12-08 12 views
-1

Существует очень полезный метод в matlab, называемый «getwb()». Для разработчиков, которые кодируют нейронную сеть, этот метод возвращает веса и смещения на последней итерации. У меня есть нейронная сеть (с использованием инструментов тензорного потока). Можно каким-то образом преобразовать этот метод?Преобразование метода matlab в python

Я пробовал много с тензоромFlow.saver() и restore(), но я действительно не понимаю эту проблему.

спасибо!

EDIT: моя модель:

def neuralNetworkModel(x): 
    # first step: (input * weights) + bias, linear operation like y = ax + b 
    # each layer connection to other layer will represent by nodes(i) * nodes(i+1) 

    for i in range(0,numberOfLayers): 
    if i == 0: 
     hiddenLayers.append({"weights": tensorFlow.Variable(tensorFlow.random_normal([sizeOfRow, nodesLayer[i]])), 
         "biases": tensorFlow.Variable(tensorFlow.random_normal([nodesLayer[i]]))}) 

    elif i > 0 and i < numberOfLayers-1: 
     hiddenLayers.append({"weights" : tensorFlow.Variable(tensorFlow.random_normal([nodesLayer[i], nodesLayer[i+1]])), 
        "biases" : tensorFlow.Variable(tensorFlow.random_normal([nodesLayer[i+1]]))}) 
    else: 
     outputLayer = {"weights": tensorFlow.Variable(tensorFlow.random_normal([nodesLayer[i], classes])), 
        "biases": tensorFlow.Variable(tensorFlow.random_normal([classes]))} 


    # create the layers 
    for i in range(numberOfLayers): 
    if i == 0: 
     layers.append(tensorFlow.add(tensorFlow.matmul(x, hiddenLayers[i]["weights"]), hiddenLayers[i]["biases"])) 
     layers.append(tensorFlow.nn.relu(layers[i])) # pass values to activation function (i.e sigmoid, softmax) and add it to the layer 

    elif i >0 and i < numberOfLayers-1: 
     layers.append(tensorFlow.add(tensorFlow.matmul(layers[i-1], hiddenLayers[i]["weights"]), hiddenLayers[i]["biases"])) 
     layers.append(tensorFlow.nn.relu(layers[i])) 

    output = tensorFlow.matmul(layers[numberOfLayers-1], outputLayer["weights"]) + outputLayer["biases"] 
    finalOutput = output 
    return output 
+1

Рассмотрите возможность добавления некоторых деталей и кода: какую модель вы тренируете? как ты делаешь это? что вы пытались и как это не сработало? –

+0

спасибо, я обновил свой пост. –

ответ

0

В своем коде вы создаете кучу переменных для весов и смещений скрытых и выходных слоев. Вы должны быть в состоянии получить их в любой момент (когда сеанс активен) с помощью tf.Session.run() нравится следующим образом:

import tensorflow as tf 

tf.reset_default_graph() 

v = tf.Variable(tf.random_normal((5, 5))) 

init = tf.initialize_all_variables() 

with tf.Session() as sess: 
    sess.run(init) 
    v_val = sess.run(v) 
    print v_val 

Я также советую использовать tf.learn библиотеку, которая содержит полезные абстракции, как fully_connected слой.