kerasでbackend
概要
kerasのbackendだけで、学習して推定してみた。
写真
環境
Raspberry Pi 3 model B v1.2 element14
2017-09-07-raspbian-stretch
tensorflow-1.3
サンプルコード
from tensorflow.contrib.keras.python.keras import backend as K
from tensorflow.contrib.keras.python.keras.optimizers import SGD
import numpy as np
import matplotlib.pyplot as plt
dx = np.arange(-3, 3, 0.1)
dy = np.sin(dx)
input_dim = 1
output_dim = 1
hidden_dim = 8
x = K.placeholder(shape = (None, input_dim), name = "x")
ytrue = K.placeholder(shape = (None, output_dim), name = "y")
W1 = K.random_uniform_variable((input_dim, hidden_dim), 0, 1, name = "W1")
W2 = K.random_uniform_variable((hidden_dim, output_dim), 0, 1, name = "W2")
b1 = K.random_uniform_variable((hidden_dim, ), 0, 1, name = "b1")
b2 = K.random_uniform_variable((output_dim, ), 0, 1, name = "b2")
params = [W1, b1, W2, b2]
hidden = K.tanh(K.dot(x, W1) + b1)
ypred = K.tanh(K.dot(hidden, W2) + b2)
loss = K.mean(K.square(ypred - ytrue), axis = -1)
opt = SGD()
updates = opt.get_updates(params, [], loss)
train = K.function(inputs = [x, ytrue], outputs = [W1, b2, loss], updates = updates)
for ep in range(2000):
for i in range(60):
c1, c2, c3 = train([[[dx[i]]], [[dy[i]]]])
if ep % 100 == 0:
print (ep, c3[0])
pred = K.function(inputs = [x], outputs = [ypred])
p = []
for i in range(60):
preds = pred([[[dx[i]]]])
p.append(preds[0][0])
print (p)
plt.plot(dx, dy, 'b', dx, p, 'r--')
plt.savefig("backend10.png")
plt.show()
from tensorflow.contrib.keras.python.keras import backend as K
from tensorflow.contrib.keras.python.keras.optimizers import SGD
import numpy as np
import matplotlib.pyplot as plt
dx = np.arange(-3, 3, 0.1)
dy = np.sin(dx)
input_dim = 1
output_dim = 1
hidden_dim = 8
x = K.placeholder(shape = (None, input_dim), name = "x")
ytrue = K.placeholder(shape = (None, output_dim), name = "y")
W1 = K.random_uniform_variable((input_dim, hidden_dim), 0, 1, name = "W1")
W2 = K.random_uniform_variable((hidden_dim, output_dim), 0, 1, name = "W2")
b1 = K.random_uniform_variable((hidden_dim, ), 0, 1, name = "b1")
b2 = K.random_uniform_variable((output_dim, ), 0, 1, name = "b2")
params = [W1, b1, W2, b2]
hidden = K.tanh(K.dot(x, W1) + b1)
ypred = K.tanh(K.dot(hidden, W2) + b2)
loss = K.mean(K.square(ypred - ytrue), axis = -1)
opt = SGD()
updates = opt.get_updates(params, [], loss)
train = K.function(inputs = [x, ytrue], outputs = [W1, b2, loss], updates = updates)
for ep in range(2000):
for i in range(60):
c1, c2, c3 = train([[[dx[i]]], [[dy[i]]]])
if ep % 100 == 0:
print (ep, c3[0])
pred = K.function(inputs = [x], outputs = [ypred])
p = []
for i in range(60):
preds = pred([[[dx[i]]]])
p.append(preds[0][0])
print (p)
plt.plot(dx, dy, 'b', dx, p, 'r--')
plt.savefig("backend10.png")
plt.show()
以上。
Author And Source
この問題について(kerasでbackend), 我々は、より多くの情報をここで見つけました https://qiita.com/ohisama@github/items/e2a9fd93fcc831bd7db8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .