中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

python寫(xiě)激勵(lì)函數(shù) python勵(lì)志代碼

怎么用python寫(xiě)tensorflow

開(kāi)始使用

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、長(zhǎng)沙網(wǎng)站維護(hù)、網(wǎng)站推廣。

TensorFlow并不是一個(gè)純粹的神經(jīng)網(wǎng)絡(luò)框架, 而是使用數(shù)據(jù)流圖進(jìn)行數(shù)值分析的框架.

TensorFlow使用有向圖(graph)表示一個(gè)計(jì)算任務(wù).圖的節(jié)點(diǎn)稱為ops(operations)表示對(duì)數(shù)據(jù)的處理,圖的邊f(xié)low 描述數(shù)據(jù)的流向.

該框架計(jì)算過(guò)程就是處理tensor組成的流. 這也是TensorFlow名稱的來(lái)源.

TensorFlow使用tensor表示數(shù)據(jù). tensor意為張量即高維數(shù)組,在python中使用numpy.ndarray表示.

TensorFlow使用Session執(zhí)行圖, 使用Variable維護(hù)狀態(tài).tf.constant是只能輸出的ops, 常用作數(shù)據(jù)源.

下面我們構(gòu)建一個(gè)只有兩個(gè)constant做輸入, 然后進(jìn)行矩陣乘的簡(jiǎn)單圖:

from tensorflow import Session, device, constant, matmul'''構(gòu)建一個(gè)只有兩個(gè)constant做輸入, 然后進(jìn)行矩陣乘的簡(jiǎn)單圖:'''#如果不使用with session()語(yǔ)句, 需要手動(dòng)執(zhí)行session.close().

#with device設(shè)備指定了執(zhí)行計(jì)算的設(shè)備:

# ? ?"/cpu:0": 機(jī)器的 CPU.

# ? ?"/gpu:0": 機(jī)器的第一個(gè) GPU, 如果有的話.

# ? ?"/gpu:1": 機(jī)器的第二個(gè) GPU, 以此類推.

with Session() as session: ?# 創(chuàng)建執(zhí)行圖的上下文

with device('/cpu:0'): ?# 指定運(yùn)算設(shè)備

mat1 = constant([[3, 3]]) ?# 創(chuàng)建源節(jié)點(diǎn)

mat2 = constant([[2], [2]])

product = matmul(mat1, mat2) # 指定節(jié)點(diǎn)的前置節(jié)點(diǎn), 創(chuàng)建圖

result = session.run(product) # 執(zhí)行計(jì)算 ? ? ? ?print(result)123456789101112131415161718

下面使用Variable做一個(gè)計(jì)數(shù)器:

from tensorflow import Session, constant, Variable, add, assign, initialize_all_variables

state = Variable(0, name='counter') # 創(chuàng)建計(jì)數(shù)器one = constant(1) # 創(chuàng)建數(shù)據(jù)源: 1val = add(state, one) # 創(chuàng)建新值節(jié)點(diǎn)update = assign(state, val) # 更新計(jì)數(shù)器setup = initialize_all_variables() # 初始化Variablewith Session() as session:

session.run(setup) # 執(zhí)行初始化

print(session.run(state)) # 輸出初值

for i in range(3):

session.run(update) # 執(zhí)行更新

print(session.run(state)) # 輸出計(jì)數(shù)器值12345678910111213

在使用變量前必須運(yùn)行initialize_all_variables()返回的圖, 運(yùn)行Variable節(jié)點(diǎn)將返回變量的值.

本示例中將構(gòu)建圖的過(guò)程寫(xiě)在了上下文之外, 而且沒(méi)有指定運(yùn)行設(shè)備.

上面示例中session.run只接受一個(gè)op作為參數(shù), 實(shí)際上run可以接受op列表作為輸入:

session.run([op1, op2])1

上述示例一直使用constant作為數(shù)據(jù)源, feed可以在運(yùn)行時(shí)動(dòng)態(tài)地輸入數(shù)據(jù):

from tensorflow import Session, placeholder, mul, float32

input1 = placeholder(float32)

input2 = placeholder(float32)

output = mul(input1, input2)with Session() as session: ? ?print session.run(output, feed_dict={input1: [3], input2: [2]})1234567

實(shí)現(xiàn)一個(gè)簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)

神經(jīng)網(wǎng)絡(luò)是應(yīng)用廣泛的機(jī)器學(xué)習(xí)模型, 關(guān)于神經(jīng)網(wǎng)絡(luò)的原理可以參見(jiàn)這篇隨筆, 或者在tensorflow playground上體驗(yàn)一下在線demo.

首先定義一個(gè)BPNeuralNetwork類:

class BPNeuralNetwork:

def __init__(self):

self.session = tf.Session()

self.input_layer = None

self.label_layer = None

self.loss = None

self.trainer = None

self.layers = [] ? ?def __del__(self):

self.session.close()1234567891011

編寫(xiě)一個(gè)生成單層神經(jīng)網(wǎng)絡(luò)函數(shù),每層神經(jīng)元用一個(gè)數(shù)據(jù)流圖表示.使用一個(gè)Variable矩陣表示與前置神經(jīng)元的連接權(quán)重, 另一個(gè)Variable向量表示偏置值, 并為該層設(shè)置一個(gè)激勵(lì)函數(shù).

def make_layer(inputs, in_size, out_size, activate=None):

weights = tf.Variable(tf.random_normal([in_size, out_size]))

basis = tf.Variable(tf.zeros([1, out_size]) + 0.1)

result = tf.matmul(inputs, weights) + basis ? ?if activate is None: ? ? ? ?return result ? ?else: ? ? ? ?return activate(result)12345678

使用placeholder作為輸入層.

self.input_layer = tf.placeholder(tf.float32, [None, 2])1

placeholder的第二個(gè)參數(shù)為張量的形狀, [None, 1]表示行數(shù)不限, 列數(shù)為1的二維數(shù)組, 含義與numpy.array.shape相同.這里, self.input_layer被定義為接受二維輸入的輸入層.

同樣使用placeholder表示訓(xùn)練數(shù)據(jù)的標(biāo)簽:

self.label_layer = tf.placeholder(tf.float32, [None, 1])1

使用make_layer為神經(jīng)網(wǎng)絡(luò)定義兩個(gè)隱含層, 并用最后一層作為輸出層:

self.loss = tf.reduce_mean(tf.reduce_sum(tf.square((self.label_layer - self.layers[1])), reduction_indices=[1]))1

tf.train提供了一些優(yōu)化器, 可以用來(lái)訓(xùn)練神經(jīng)網(wǎng)絡(luò).以損失函數(shù)最小化為目標(biāo):

self.trainer = tf.train.GradientDescentOptimizer(learn_rate).minimize(self.loss)1

使用Session運(yùn)行神經(jīng)網(wǎng)絡(luò)模型:

initer = tf.initialize_all_variables()# do trainingself.session.run(initer)

for i in range(limit):

self.session.run(self.trainer, feed_dict={self.input_layer: cases, self.label_layer: labels})12345

使用訓(xùn)練好的模型進(jìn)行預(yù)測(cè):

self.session.run(self.layers[-1], feed_dict={self.input_layer: case})1

完整代碼:

import tensorflow as tfimport numpy as npdef make_layer(inputs, in_size, out_size, activate=None):

weights = tf.Variable(tf.random_normal([in_size, out_size]))

basis = tf.Variable(tf.zeros([1, out_size]) + 0.1)

result = tf.matmul(inputs, weights) + basis ? ?if activate is None: ? ? ? ?return result ? ?else: ? ? ? ?return activate(result)class BPNeuralNetwork:

def __init__(self):

self.session = tf.Session()

self.input_layer = None

self.label_layer = None

self.loss = None

self.optimizer = None

self.layers = [] ? ?def __del__(self):

self.session.close() ? ?def train(self, cases, labels, limit=100, learn_rate=0.05):

# 構(gòu)建網(wǎng)絡(luò)

self.input_layer = tf.placeholder(tf.float32, [None, 2])

self.label_layer = tf.placeholder(tf.float32, [None, 1])

self.layers.append(make_layer(self.input_layer, 2, 10, activate=tf.nn.relu))

self.layers.append(make_layer(self.layers[0], 10, 2, activate=None))

self.loss = tf.reduce_mean(tf.reduce_sum(tf.square((self.label_layer - self.layers[1])), reduction_indices=[1]))

self.optimizer = tf.train.GradientDescentOptimizer(learn_rate).minimize(self.loss)

initer = tf.initialize_all_variables() ? ? ? ?# 做訓(xùn)練

self.session.run(initer) ? ? ? ?for i in range(limit):

self.session.run(self.optimizer, feed_dict={self.input_layer: cases, self.label_layer: labels}) ? ?def predict(self, case):

return self.session.run(self.layers[-1], feed_dict={self.input_layer: case}) ? ?def test(self):

x_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

y_data = np.array([[0, 1, 1, 0]]).transpose()

test_data = np.array([[0, 1]])

self.train(x_data, y_data)

print(self.predict(test_data))

nn = BPNeuralNetwork()

nn.test()12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

上述模型雖然簡(jiǎn)單但是使用不靈活, 作者采用同樣的思想實(shí)現(xiàn)了一個(gè)可以自定義輸入輸出維數(shù)以及多層隱含神經(jīng)元的網(wǎng)絡(luò), 可以參見(jiàn)dynamic_bpnn.py

import tensorflow as tfimport numpy as npdef make_layer(inputs, in_size, out_size, activate=None):

weights = tf.Variable(tf.random_normal([in_size, out_size]))

basis = tf.Variable(tf.zeros([1, out_size]) + 0.1)

result = tf.matmul(inputs, weights) + basis ? ?if activate is None: ? ? ? ?return result ? ?else: ? ? ? ?return activate(result)class BPNeuralNetwork:

def __init__(self):

self.session = tf.Session()

self.loss = None

self.optimizer = None

self.input_n = 0

self.hidden_n = 0

self.hidden_size = []

self.output_n = 0

self.input_layer = None

self.hidden_layers = []

self.output_layer = None

self.label_layer = None

def __del__(self):

self.session.close() ? ?def setup(self, ni, nh, no):

# 設(shè)置參數(shù)個(gè)數(shù)

self.input_n = ni

self.hidden_n = len(nh) ?#隱藏層的數(shù)量

self.hidden_size = nh ?#每個(gè)隱藏層中的單元格數(shù)

self.output_n = no ? ? ? ?#構(gòu)建輸入層

self.input_layer = tf.placeholder(tf.float32, [None, self.input_n]) ? ? ? ?#構(gòu)建標(biāo)簽層

self.label_layer = tf.placeholder(tf.float32, [None, self.output_n]) ? ? ? ?#構(gòu)建隱藏層

in_size = self.input_n

out_size = self.hidden_size[0]

inputs = self.input_layer

self.hidden_layers.append(make_layer(inputs, in_size, out_size, activate=tf.nn.relu)) ? ? ? ?for i in range(self.hidden_n-1):

in_size = out_size

out_size = self.hidden_size[i+1]

inputs = self.hidden_layers[-1]

self.hidden_layers.append(make_layer(inputs, in_size, out_size, activate=tf.nn.relu)) ? ? ? ?#構(gòu)建輸出層

self.output_layer = make_layer(self.hidden_layers[-1], self.hidden_size[-1], self.output_n) ? ?def train(self, cases, labels, limit=100, learn_rate=0.05):

self.loss = tf.reduce_mean(tf.reduce_sum(tf.square((self.label_layer - self.output_layer)), reduction_indices=[1]))

self.optimizer = tf.train.GradientDescentOptimizer(learn_rate).minimize(self.loss)

initer = tf.initialize_all_variables() ? ? ? ?#做訓(xùn)練

self.session.run(initer) ? ? ? ?for i in range(limit):

self.session.run(self.optimizer, feed_dict={self.input_layer: cases, self.label_layer: labels}) ? ?def predict(self, case):

return self.session.run(self.output_layer, feed_dict={self.input_layer: case}) ? ?def test(self):

x_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

y_data = np.array([[0, 1, 1, 0]]).transpose()

test_data = np.array([[0, 1]])

self.setup(2, [10, 5], 1)

self.train(x_data, y_data)

print(self.predict(test_data))

nn = BPNeuralNetwork()

nn.test()12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

python中不是激活函數(shù)的是

sigmoid。python中不是激活函數(shù)的是sigmoid。函數(shù)在數(shù)學(xué)上的定義:給定一個(gè)非空的數(shù)集A,對(duì)A施加對(duì)應(yīng)法則f,記作f(A),得到另一數(shù)集B。

用python寫(xiě)一個(gè)函數(shù)

使用關(guān)鍵詞 def 聲明這是一個(gè)函數(shù)

1def 函數(shù)名 (參數(shù)):

2 語(yǔ)句塊

參數(shù)可以沒(méi)有,也可以有多個(gè),用逗號(hào)隔開(kāi),第一行稱為函數(shù)頭,結(jié)尾一定要加冒號(hào),代表開(kāi)始進(jìn)入函數(shù)體的執(zhí)行。

語(yǔ)句塊也就是函數(shù)體,是關(guān)于這個(gè)函數(shù)要實(shí)現(xiàn)的功能的語(yǔ)句,語(yǔ)句要有返回值即return語(yǔ)句,如果沒(méi)有return語(yǔ)句,就代表return none.

python寫(xiě)一個(gè)函數(shù),函數(shù)可以支持接收任意內(nèi)容(關(guān)鍵字傳參)并返回字典?

#函數(shù)傳遞參數(shù)

def func_args( ?*vartuple ):

args = []

#任何傳入的參數(shù)都加入列表

for var in vartuple:

args.append(var)

return args

a = func_args("123","abc","ABC","000")

print(a)

python relu激活函數(shù)參數(shù)是np怎么辦

import mathdef sigmoid(x,derivate=False): if derivate: return sigmoid(x)*(1-sigmoid(x)) return 1.0 / (1+math.exp(-x)) def relu(x): if x 0: return x else: return 0sigmoid 求導(dǎo)和其函數(shù)值相關(guān)

當(dāng)前文章:python寫(xiě)激勵(lì)函數(shù) python勵(lì)志代碼
轉(zhuǎn)載源于:http://m.rwnh.cn/article42/hichhc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、ChatGPTApp設(shè)計(jì)、網(wǎng)站策劃網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司
阆中市| 慈利县| 赞皇县| 阿拉善左旗| 华阴市| 潼关县| 宿迁市| 江陵县| 望奎县| 耿马| 焦作市| 平利县| 吴堡县| 岳西县| 元阳县| 威远县| 保亭| 临城县| 拉孜县| 芮城县| 江津市| 教育| 赫章县| 济源市| 鄱阳县| 新余市| 烟台市| 洛隆县| 敦煌市| 辽宁省| 永修县| 泌阳县| 高阳县| 凉山| 喀喇沁旗| 宜宾市| 会东县| 苏州市| 乌拉特中旗| 宁国市| 沈丘县|