**
fizzbuzz是面試的常見問題,內容為:輸出0到100的數字,但是3的倍數輸出fizz,5的倍數輸出buzz,同時是3和5的倍數的輸出fizzbuzz。
通過訓練乙個分類器將結果分為4classes:
all in all,網路輸入需要為二進位制,我們需要將9表示為[1,0,0,1],我們取輸入神經元為10個,達到1024的訓練資料,避免作弊嫌疑.
def
binary_encode
(i, num_digits):
return np.array([i >> d & 1
for d in range(num_digits)])
輸出用四個神經元one-hot來表示即可:
if i % 15 == 0: return np.array([0, 0, 0, 1])
elif i % 5 == 0: return np.array([0, 0, 1, 0])
elif i % 3 == 0: return np.array([0, 1, 0, 0])
else: return np.array([1, 0, 0, 0])
這個時候,輸入輸出已經做好,取101至1024作為訓練集
num_digits = 10
trx = np.array([binary_encode(i, num_digits) for i in
range(101, 2 ** num_digits)])
try = np.array([fizz_buzz_encode(i) for i in
range(101, 2 ** num_digits)])
定義輸入引數(tensorflow)
num_hidden = 100
x = tf.placeholder("float", [none, num_digits])
y = tf.placeholder("float", [none, 4])
definit_weights
(shape):
return tf.variable(tf.random_normal(shape, stddev=0.01))
#初始化
w_h = init_weights([num_digits, num_hidden])
#隱含層輸出
defmodel
(x, w_h, w_o):
h = tf.nn.relu(tf.matmul(x, w_h))
return tf.matmul(h, w_o)
用交叉熵定義損失函式
py_x = model(x, w_h, w_o)
cost = tf.reduce_mean(tf.nn
.softmax_cross_entropy_with_logits(py_x, y))
train_op = tf.train
.gradientdescentoptimizer(0.05).minimize(cost)
#定義網路輸出
predict_op = tf.argmax(py_x, 1)
deffizz_buzz
(i, prediction):
return [str(i), "fizz", "buzz", "fizzbuzz"][prediction]
下面用sdg訓練
batch_size = 128
# launch the graph in a session
with tf.session() as sess:
tf.initialize_all_variables().run()
for epoch in range(10000):
# shuffle the data before each training iteration.
p = np.random
.permutation(range(len(trx)))
trx, try = trx[p], try[p]
# train in batches of 128 inputs.
for start in range(0, len(trx), batch_size):
end = start + batch_size
sess.run(train_op, feed_dict=)
# and print the current accuracy on the training data.
print(epoch, np.mean(np.argmax(try, axis=1) ==
sess.run(predict_op, feed_dict=)))
# and now for some fizz buzz
numbers = np.arange(1, 101)
tex = np.transpose(binary_encode(numbers, num_digits))
tey = sess.run(predict_op, feed_dict=)
output = np.vectorize(fizz_buzz)(numbers, tey)
print(output)
可以執行了 機器學習 1 機器學習的入門
最近由於專案要求,從零開始自學機器學習,使用語言是python2.7。機器學習分類 監督學習,無監督學習,強化學習 監督學習 對事物未知表現的 包括分類問題和回歸問題。1 分類 指給乙個新的模式,根據訓練模型推斷它所對應的類別是多少,是一種定性輸出,也叫離散變數 2 回歸 指給乙個新的模式,根據訓練...
機器學習(1) 機器學習的分類
第二種分類方式 本文是imooc python3入門機器學習 的學習筆記,用於整理自己學習到的概念,用以備查。簡單說來,就是對於學習對於所要求的資料集,是否需要標註。常見的監督學習演算法有 常見的 非監督演算法及其用處見下 出於各種原因,資料集可能出現一部分資料集帶有標記,而另一部分則缺失標記。此時...
機器學習 初識機器學習
1.什麼是機器學習?對於機器學習到現在都還沒有統一的定義,但是,通過乙個例子和較權威的定義來理解機器學習,最後附上我個人對機器學習的理解 2.監督學習 1 監督學習基本思想 我們資料集中的每個樣本都有相應的 正確答案 即每個樣本都是真實值,再根據這些樣本作出 舉乙個房價預售的例子來說明 eg 下面圖...