2016-03-02 4 views
1

У меня есть рамка данных pandas, содержащая поплавки от 0 до 1.
Я хочу повысить эту матрицу до определенной мощности (например, 6).Как вычислить работу матрицы с помощью TensorFlow?

Я начал использовать scipy но операция принимает на самом деле, очень долго для моего 7000x7000 матрицы таким образом, я думал, что это будет прекрасная возможность проверить tensorflow

Мои извинения, если запись о триповый, я думал Я правильно вводил все. Я хочу o использовать placeholder и feed. Моя функция exp_corr вводит объект dataframe pandas и затем выражает матрицу степенью некоторого целого.

Как использовать заполнитель с feed_dict?

Вот мой код:

#Example DataFrame 
L_test = [[0.999999999999999, 
    0.374449352805868, 
    0.000347439531148995, 
    0.00103026903356954, 
    0.0011830950375467401], 
[0.374449352805868, 
    1.0, 
    1.17392596672424e-05, 
    1.49428208843456e-07, 
    1.216664263989e-06], 
[0.000347439531148995, 
    1.17392596672424e-05, 
    1.0, 
    0.17452569907144502, 
    0.238497202355299], 
[0.00103026903356954, 
    1.49428208843456e-07, 
    0.17452569907144502, 
    1.0, 
    0.7557000865939779], 
[0.0011830950375467401, 
    1.216664263989e-06, 
    0.238497202355299, 
    0.7557000865939779, 
    1.0]] 
labels = ['AF001', 'AF002', 'AF003', 'AF004', 'AF005'] 
DF_corr = pd.DataFrame(L_test,columns=labels,index=labels) 
DF_signed = np.tril(np.ones(DF_corr.shape)) * DF_corr 

Dataframe выглядит следующим образом:

   AF001   AF002  AF003 AF004 AF005 
AF001 1.000000 0.000000e+00 0.000000 0.0000  0 
AF002 0.374449 1.000000e+00 0.000000 0.0000  0 
AF003 0.000347 1.173926e-05 1.000000 0.0000  0 
AF004 0.001030 1.494282e-07 0.174526 1.0000  0 
AF005 0.001183 1.216664e-06 0.238497 0.7557  1 

Матрица экспоненциальная функция Я пробовал:

#TensorFlow Computation 
def exp_corr(DF_var,exp=6): 
#  T_feed = tf.placeholder("float", DF_var.shape) ? 
    T_con = tf.constant(DF_var.as_matrix(),dtype="float") 
    T_exp = tf.pow(T_con, exp) 

    #Initiate 
    init = tf.initialize_all_variables() 
    sess = tf.Session() 
    DF_exp = pd.DataFrame(sess.run(T_exp)) 
    DF_exp.columns = DF_var.column; DF_exp.index = DF_var.index 
    sess.close() 
    return(DF_exp) 

DF_exp = exp_corr(DF_signed) 
+0

Можете ли вы дать комментарий на выигрыш в скорости? – davidhigh

ответ

3

EDIT: Вопрос был обновлен удалить ошибку messa GE. Вы очень близки к возможности подачи матрицы в вашу программу. Следующая версия вашей exp_corr() функции следует сделать трюк:

def exp_corr(DF_var,exp=6): 
    T_feed = tf.placeholder(tf.float32, DF_var.shape) 
    T_exp = tf.pow(T_feed, exp) 

    sess = tf.Session() 

    # Use the `feed_dict` argument to specify feeds. 
    DF_exp = pd.DataFrame(sess.run(T_exp, feed_dict={T_feed: DF_var.as_matrix()})) 
    DF_exp.columns = DF_var.column; DF_exp.index = DF_var.index 

    sess.close() 

    return DF_exp 

оригинальный вопрос с вашей программой была в сообщении об ошибке:

Node 'Input Dataframe': Node name contains invalid characters 

В частности, name аргумент TensorFlow ор конструкторы (например, tf.constant() и tf.pow()) должны быть строкой, которая не содержит пробелов.

Определен синтаксис имен узлов here. Имена узлов должны соответствовать следующему регулярному выражению (по существу, буквенно-цифровой, плюс ., _ и /, но не начиная с _ или /):

[A-Za-z0-9.][A-Za-z0-9_./]* 
+0

Благодарим за редактирование! +1 –

 Смежные вопросы

  • Нет связанных вопросов^_^