2017-12-05 16 views
1

저는 현재 Flask로 대화 형 신경망 훈련을위한 간단한 웹 응용 프로그램을 만들려고합니다. 내가 골똘히 생각하는 것은 피드 포워드 신경 네트워크가 훈련 된 후에 숨겨진 레이어의 가중치를 검색하는 것입니다. 제 목표는 Tensorflow's Playground에 대한 실제 백엔드를 만드는 것입니다.Tensorflow - 훈련 후 훈련 된 피드 포워드 신경망의 가중치/편향치 검색

# Weight initializations 
tW1 = init_weights(shape=(n_features, hidden_nodes)) 
tW2 = init_weights(shape=(hidden_nodes, output_nodes)) 

어떻게 하나가 훈련 Tensorflow 완료 한 후 tW1tW2의 계산 된 가중치를 검색에 대해 가지 않습니다

고려에 다음 가중치 초기화를 타고? for 루프가 완료된 후

def retrieve_data(): 
    """Retrieves the data - to be expanded for custom database access + S3 retrieval + URL""" 

    result = pd.read_csv('snp_data.csv', parse_dates=['Date'], index_col=['Date']) 
    return result 

def get_columns(data, columns): 
    features = data.ix[:, columns] 
    return features 

def preprocess(data): 
    """Data preprocessing""" 
    result = (data - data.mean())/data.std(ddof=0) 
    result = result.fillna(0) 
    return result 

def init_weights(shape): 
    """ Weights initialization """ 
    weights = tf.random_normal(shape=shape, stddev=0.1) 
    return tf.Variable(weights) 

def forwardprop(X, w_1, w_2): 
    """Forward propagation""" 
    h = tf.nn.relu(tf.matmul(X, w_1)) 
    y_hat = tf.matmul(h, w_2) 
    return y_hat 

# @app.route('/train') 
def train(): 
    data = retrieve_data() 

    train_x = get_columns(data, columns=['Open', 'Close']) 
    train_x = preprocess(data=train_x).as_matrix().astype(np.float32) 
    train_x = train_x[:(len(train_x) - (len(train_x) % 32))] 

    train_y = get_columns(data, columns=['Adj Close']).as_matrix().astype(np.float32) 
    train_y = train_y[:(len(train_y) - (len(train_y) % 32))] 

    # Number of input nodes 
    n_features = train_x.shape[1] 

    # Number of output nodes 
    output_nodes = train_y.shape[1] 

    # Number of hidden nodes 
    hidden_nodes = 20 

    # TF Placeholders for the inputs and outputs 
    tx = tf.placeholder(tf.float32, shape=(None, n_features)) 
    ty = tf.placeholder(tf.float32, shape=(None, output_nodes)) 

    # Weight initializations 
    tW1 = init_weights(shape=(n_features, hidden_nodes)) 
    tW2 = init_weights(shape=(hidden_nodes, output_nodes)) 

    # Forward propagation 
    y_hat = forwardprop(tx, tW1, tW2) 

    # Backward Propagation 
    tMSE = tf.reduce_mean(tf.square(y_hat - ty)) 
    learning_rate = 0.001 
    tOptimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate) 
    tOptimize = tOptimizer.minimize(tMSE) 

    batch_size = 32 
    n_epochs = 8 

    init = tf.global_variables_initializer() 

    with tf.Session() as sess: 
     sess.run(init) 
     for i_e in range(n_epochs): 
      for i in range(0, train_x.shape[0], batch_size): 
       batch_X = train_x[i:i + batch_size, ...] 
       batch_y = train_y[i:i + batch_size] 

       _, loss = sess.run([tOptimize, tMSE], feed_dict={tx: batch_X, ty: batch_y}) 
       print(i, loss) 
    return 'Flask Dockerized' 

답변

1

final_tW1, final_tW2 = sess.run([tW1, tW2])만큼 간단해야

여기서 코드의 예이다. 변수가 자리 표시 자에 종속되지 않는 자체 값을 유지하므로 아무 것도 공급할 필요가 없습니다.