初始版本代碼(偽)

從最初的簡單實現(xiàn)菱皆,到后面一步步的整合代碼塊,終于達(dá)到了可讀挨稿、便于調(diào)試的程度仇轻。代碼雖然清晰了,但是問題依然存在奶甘。目前主要的問題便是權(quán)重學(xué)習(xí)不到東西篷店,loss總是不下降。


代碼成長歷程臭家,保存了每個版本

目前的版本loss可以下降疲陕,很快下降到0,但是查看生成的y值钉赁,與真實值差距很大蹄殃,故推斷l(xiāng)oss存在問題。

import numpy as np

import pandas as pd

import tensorflow as tf

#轉(zhuǎn)為onehot編碼

def turn_onehot(df):

? ? for key in df.columns:

? ? ? ? oneHot = pd.get_dummies(df[key])

? ? ? ? for oneHotKey in oneHot.columns: #防止重名

? ? ? ? ? ? oneHot = oneHot.rename(columns={oneHotKey : key+'_'+str(oneHotKey)})

? ? ? ? df = df.drop(key, axis=1)

? ? ? ? df = df.join(oneHot)

? ? return df

#獲取一批次的數(shù)據(jù)

def get_batch(x_date, y_date, batch):

? ? global pointer

? ? x_date_batch = x_date[pointer:pointer+batch]

? ? y_date_batch = y_date[pointer:pointer+batch]

? ? pointer = pointer + batch

? ? return x_date_batch, y_date_batch

#生成layer

def add_layer(input_num, output_num, x, layer, active=None):

? ? with tf.name_scope('layer'+layer+'/W'+layer):

? ? ? ? W = tf.Variable(tf.random_normal([input_num, output_num]), name='W'+layer)

? ? ? ? tf.summary.histogram('layer'+layer+'/W'+layer, W)

? ? with tf.name_scope('layer'+layer+'/b'+layer):

? ? ? ? b = tf.Variable(tf.zeros([1, output_num])+0.1, name='b'+layer)

? ? ? ? tf.summary.histogram('layer'+layer+'/b'+layer, b)

? ? with tf.name_scope('layer'+layer+'/l'+layer):

? ? ? ? l = active(tf.matmul(x, W)+b) #使用sigmoid激活函數(shù)你踩,備用函數(shù)還有relu

? ? ? ? tf.summary.histogram('layer'+layer+'/l'+layer, l)

? ? return l

hiddenDim = 200 #隱藏層神經(jīng)元數(shù)

save_file = './train_model.ckpt'

istrain = True

istensorborad = False

pointer = 0

if istrain:

? ? samples = 400

? ? batch = 5 #每批次的數(shù)據(jù)輸入數(shù)量

else:

? ? samples = 550

? ? batch = 1 #每批次的數(shù)據(jù)輸入數(shù)量

with tf.name_scope('inputdate-x-y'):

? ? #導(dǎo)入

? ? df = pd.DataFrame(pd.read_csv('GHMX.CSV',header=0))

? ? #產(chǎn)生 y_data 值 (1, n)

? ? y_date = df['number'].values

? ? y_date = y_date.reshape((-1,1))

? ? #產(chǎn)生 x_data 值 (n, 4+12+31+24)

? ? df = df.drop('number', axis=1)

? ? df = turn_onehot(df)

? ? x_data = df.values


###生成神經(jīng)網(wǎng)絡(luò)模型

#占位符

with tf.name_scope('inputs'):

? ? x = tf.placeholder("float", shape=[None, 71], name='x_input')

? ? y_ = tf.placeholder("float", shape=[None, 1], name='y_input')

#生成神經(jīng)網(wǎng)絡(luò)

l1 = add_layer(71, hiddenDim, x, '1', tf.nn.relu)

l2 = add_layer(hiddenDim, hiddenDim, l1, '2', tf.nn.relu)

#l3 = add_layer(hiddenDim, hiddenDim, l2, '3', tf.nn.relu)

#l4 = add_layer(hiddenDim, hiddenDim, l3, '4', tf.nn.relu)

#l5 = add_layer(hiddenDim, hiddenDim, l4, '5', tf.nn.relu)

#l6 = add_layer(hiddenDim, hiddenDim, l5, '6', tf.nn.relu)

#l7 = add_layer(hiddenDim, hiddenDim, l6, '7', tf.nn.relu)

#l8 = add_layer(hiddenDim, hiddenDim, l7, '8', tf.nn.relu)

#l9 = add_layer(hiddenDim, hiddenDim, l8, '9', tf.nn.relu)

y = add_layer(hiddenDim, 1, l2, '10', tf.nn.relu)

#計算loss

with tf.name_scope('loss'):

? ? #loss = tf.reduce_mean(tf.reduce_sum(tf.square(y - y_), name='square'), name='loss')? #損失函數(shù),損失不下降,換用別的函數(shù)

? ? #loss = -tf.reduce_sum(y_*tf.log(y))? #損失仍然不下降

? ? loss = -tf.reduce_sum(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)) , name='loss')

? ? tf.summary.scalar('loss', loss)

#梯度下降

with tf.name_scope('train_step'):

? ? train_step = tf.train.GradientDescentOptimizer(0.0005).minimize(loss)

#初始化

sess = tf.Session()

if istensorborad:

? ? merged = tf.summary.merge_all()

? ? writer = tf.summary.FileWriter('logs/', sess.graph)

sess.run(tf.initialize_all_variables())

#保存/讀取模型

saver = tf.train.Saver()

if not istrain:

? ? saver.restore(sess, save_file)

for i in range(samples):

? ? x_date_batch, y_date_batch = get_batch(x_data, y_date, batch)

? ? feed_dict = {x: x_date_batch, y_: y_date_batch}

? ? if istrain:

? ? ? ? sess.run(train_step, feed_dict=feed_dict)

? ? ? ? print(y.eval(feed_dict, sess))

? ? else:

? ? ? ? sess.run(loss, feed_dict=feed_dict)

? ? ? ? print(test_assess.eval(feed_dict, sess))

? ? if istensorborad:

? ? ? ? result = sess.run(merged, feed_dict=feed_dict)

? ? ? ? writer.add_summary(result,i)

#保存模型

if istrain:

? ? saver.save(sess, save_file)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锉走,一起剝皮案震驚了整個濱河市扇售,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌膝藕,老刑警劉巖式廷,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芭挽,居然都是意外死亡懒棉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門览绿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來策严,“玉大人,你說我怎么就攤上這事饿敲∑薜迹” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵怀各,是天一觀的道長倔韭。 經(jīng)常有香客問我,道長瓢对,這世上最難降的妖魔是什么寿酌? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮硕蛹,結(jié)果婚禮上醇疼,老公的妹妹穿的比我還像新娘硕并。我一直安慰自己,他們只是感情好秧荆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布倔毙。 她就那樣靜靜地躺著,像睡著了一般乙濒。 火紅的嫁衣襯著肌膚如雪陕赃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天颁股,我揣著相機(jī)與錄音么库,去河邊找鬼。 笑死甘有,一個胖子當(dāng)著我的面吹牛诉儒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梧疲,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼允睹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了幌氮?” 一聲冷哼從身側(cè)響起缭受,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎该互,沒想到半個月后米者,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宇智,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年蔓搞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片随橘。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡喂分,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出机蔗,到底是詐尸還是另有隱情蒲祈,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布萝嘁,位于F島的核電站梆掸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏牙言。R本人自食惡果不足惜酸钦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咱枉。 院中可真熱鬧卑硫,春花似錦徒恋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽基括。三九已至颜懊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間风皿,已是汗流浹背河爹。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桐款,地道東北人咸这。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像魔眨,于是被迫代替她去往敵國和親媳维。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容