tensorflow DNN訓練三角函式模型

2021-10-08 17:34:15 字數 2183 閱讀 2193

配置超引數

class config:

def __init__(self):

self.lr = 0.001

self.epoches = 2000

self.samples = 200 #訓練樣本數量

self.hidden_units = 200 #隱藏層神經元個數

獲取訓練樣本

class sample:

def __init__(self, samples):

self.xs = np.random.uniform(-np.pi, np.pi, [samples]) #隨機正太分布生成-pi到pi的隨機數作為樣本x

self.xs = sorted(self.xs)

self.ys = np.sin(self.xs), np.cos(self.xs) #樣本目標值[2,-1]

搭建神經網路

class tensor:

def __init__(self, config: config):

self.x = tf.placeholder(tf.float32, [none], name='x') # [200]

self.y = tf.placeholder(tf.float32, [2,none], name='y') #[2,-1]

x = tf.reshape(self.x, [-1, 1]) # 元素轉化為張量

x = tf.layers.dense(x, config.hidden_units, tf.nn.relu)

self.y_predict = tf.layers.dense(x, 2) #[-1,2]

y = tf.transpose(self.y) #使目標值的shape與**值相同

self.loss = tf.reduce_mean(tf.square(self.y_predict - y)) #計算loss

self.lr = tf.placeholder(tf.float32, , 'lr')

opt = tf.train.adamoptimizer(self.lr) #訓練優化器

self.train_op = opt.minimize(self.loss)

self.loss = tf.sqrt(self.loss)

編寫應用物件

def __init__(self, config: config):

self.ts = tensor(config) #例項化張量網路

self.config = config

self.session = tf.session() #建立會話

self.session.run(tf.global_variables_initializer()) #初始化變數

def train(self): #訓練方法

sample = sample(200)

for epoche in range(self.config.epoches):

_, loss = \

self.session.run([self.ts.train_op, self.ts.loss],

)#餵入訓練資料

print(f":")

return sample.xs, sample.ys #返回樣本資料

def predict(self): #**方法

sample = sample(400)

ys = self.session.run(self.ts.y_predict, ) #餵入**資料

return sample.xs, ys #返回**資料

def close(self):

self.session.close()

主方法

if __name__ == '__main__':

plt.plot(predict_x, predict_y)

plt.legend(['predict_sin','predict_cos'])

plt.show()

結果

訓練過程 GPU訓練

為什麼y2b的8m,8張普通tt為啥要跑幾個月?因為gpu其實有60 的時間都是在等待資料填充完成,簡直蠢。1 換個固態硬碟試試?沒用。問題出在系統匯流排上,一幀的資料量入視訊記憶體後有1.58g 當前最優的分布式訓練方式是通過引數伺服器 parameter server 執行的同步隨機梯度下降演算...

訓練 9 13 訓練賽

a.hdu 6230 乙個合法的子串 s 3n 2 滿足條件即1 2n 1 為以n為回文中心的回文串,n 3n 2為以2n 1為中心的回文串。故我們可以通過尋找回文中心對,來判斷相應合法子串的個數。利用manacher求出每個位置的最長回文半徑,則若i,j滿足條件 i j 則應有 p i geqsl...

迴圈訓練 抗「疫」居家訓練指南迴圈訓練

為了便於大家居家訓練,在此選擇了迴圈訓練法作為保持體能的針對性方法。一 概念 迴圈訓練法是指根據訓練的具體任務,將練習手段設定為若干個練習站,運動員按照既定順序和路線,依次完成每站練習任務的訓練方法。運用迴圈訓練法可有效地激發訓練情緒,通過交替刺激不同體位累積負荷 痕跡 迴圈訓練法的結構因素有每站的...