日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

大道至简,SQL也可以实现神经网络

發布時間:2025/3/8 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大道至简,SQL也可以实现神经网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近寫SQL寫多了,突發奇想SQL是不是也能實現簡單的神經網絡訓練呢?于是帶著這個問題在GitHub上找了找,還真有....那么本文就來分享一下如何用純SQL實現一個神經網絡吧!

題外話,可能有很多人會有疑問,你一個搞算法的,為啥在寫SQL?這....就說來話長了... 總之,技多不壓身嘛!

回歸正題,我們再用SQL建模時,利用列來定義參數,從輸入層到隱藏層,我們用 w1_00, w1_01, w1_10, w1_11表示權重矩陣W1,用b1_0, b1_1表示偏置向量B1。從隱藏層到輸出層,我們用 w2_00, w2_01, w2_10, w2_11表示權重矩陣W2,用b2_0, b2_1表示偏置向量B2。這樣我們通過一個多層嵌套的查詢語句實現了整個訓練過程。

add_iteration_sql = """ SELECT x1,x2,y, w_00 - (2.0)*(dw_00+(1e-3)*w_00) AS w1_00, w_01 - (2.0)*(dw_01+(1e-3)*w_01) AS w1_01, w_10 - (2.0)*(dw_10+(1e-3)*w_10) AS w1_10, w_11 - (2.0)*(dw_11+(1e-3)*w_11) AS w1_11, b_0 - (2.0)*db_0 AS b_0, b_1 - (2.0)*db_1 AS b_1, w2_00 - (2.0)*(dw2_00+(1e-3)*w2_00) AS w2_00, w2_01 - (2.0)*(dw2_01+(1e-3)*w2_01) AS w2_01, w2_10 - (2.0)*(dw2_10+(1e-3)*w2_10) AS w2_10, w2_11 - (2.0)*(dw2_11+(1e-3)*w2_11) AS w2_11, b2_0 - (2.0)*db2_0 AS b2_0, b2_1 - (2.0)*db2_1 AS b2_1 FROM ( SELECT *, SUM(x1*dhidden_0) OVER () AS dw_00, SUM(x1*dhidden_1) OVER () AS dw_01, SUM(x2*dhidden_0) OVER () AS dw_10, SUM(x2*dhidden_1) OVER () AS dw_11, SUM(dhidden_0) OVER () AS db_0, SUM(dhidden_1) OVER () AS db_1 FROM ( SELECT *, SUM(d0*dscores_0) OVER () AS dw2_00, SUM(d0*dscores_1) OVER () AS dw2_01, SUM(d1*dscores_0) OVER () AS dw2_10, SUM(d1*dscores_1) OVER () AS dw2_11, SUM(dscores_0) OVER () AS db2_0, SUM(dscores_1) OVER () AS db2_1, CASE WHEN (d0) <= 0.0 THEN 0.0 ELSE (dscores_0*w2_00 + dscores_1*w2_01) END AS dhidden_0, CASE WHEN (d1) <= 0.0 THEN 0.0 ELSE (dscores_0*w2_10 + dscores_1*w2_11) END AS dhidden_1 FROM ( SELECT *, (CASE WHEN y = 0 THEN (probs_0 - 1)/num_examples ELSE probs_0/num_examples END) AS dscores_0, (CASE WHEN y = 1 THEN (probs_1 - 1)/num_examples ELSE probs_1/num_examples END) AS dscores_1 FROM ( SELECT *, (sum_correct_logprobs/num_examples) + 1e-3*(0.5*(w_00*w_00 + w_01*w_01 + w_10*w_10 + w_11*w_11) + 0.5*(w2_00*w2_00 + w2_01*w2_01 + w2_10*w2_10 + w2_11*w2_11)) AS loss FROM ( SELECT *, SUM(correct_logprobs) OVER () sum_correct_logprobs, COUNT(1) OVER () num_examples FROM ( SELECT *, (CASE WHEN y = 0 THEN -1*LOG(probs_0) ELSE -1*LOG(probs_1) END) AS correct_logprobs FROM ( SELECT *, EXP(scores_0)/(EXP(scores_0) + EXP(scores_1)) AS probs_0, EXP(scores_1)/(EXP(scores_0) + EXP(scores_1)) AS probs_1 FROM ( SELECT *, ((d0*w2_00 + d1*w2_10) + b2_0) AS scores_0, ((d0*w2_01 + d1*w2_11) + b2_1) AS scores_1 FROM ( SELECT *, (CASE WHEN ((x1*w_00 + x2*w_10) + b_0) > 0.0 THEN ((x1*w_00 + x2*w_10) + b_0) ELSE 0.0 END) AS d0, (CASE WHEN ((x1*w_01 + x2*w_11) + b_0) > 0.0 THEN ((x1*w_01 + x2*w_11) + b_1) ELSE 0.0 END) AS d1 FROM ( {}))))))))))""";

Generate Query

def generate_query(add_iteration_sql, root_table_sql, iterations):""" returns SQL query for deep neural network training param root_table_sql: SQL inner query producing a table with the training data and the initial values of the model parameters param add_iteration_sql: string format for adding one iteration of forward pass and backpropagation iterations: number of training iterations to be performed """inner_table = Nonefinal_query = Nonefor i in range(iterations):if inner_table is None:inner_table = root_table_sqlelse:inner_table = final_queryfinal_query = add_iteration_sql.format(inner_table)return final_query print(generate_query(add_iteration_sql, root_table_sql, 10))

SELECT(SUM(CASE WHEN y_hat = y THEN1 ELSE0END)/COUNT(1))*100.0AS accuracy_perc FROM ( SELECT*,(CASE WHEN scores_0 > scores_1 THEN0 ELSE1END) AS y_hat FROM ( SELECT*,((d0*w2_00 + d1*w2_10) + b2_0) AS scores_0,((d0*w2_01 + d1*w2_11) + b2_1) AS scores_1 FROM ( SELECT*,(CASE WHEN ((x1*w_00 + x2*w_10) + b_0) > 0.0THEN ((x1*w_00 + x2*w_10) + b_0) ELSE0.0END) AS d0,(CASE WHEN ((x1*w_01 + x2*w_11) + b_0) > 0.0THEN ((x1*w_01 + x2*w_11) + b_1) ELSE0.0END) AS d1 FROM ( ( SELECT* FROM `dota.2009.example_table_for_sql2nn` )))))

總結

以上是生活随笔為你收集整理的大道至简,SQL也可以实现神经网络的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。