pip install tensorflow==1.15
import tensorflow as tf
import numpy as np
# それぞれ定数を定義
a = tf.constant(1)
b = tf.constant(2, dtype=tf.float32, shape=[3,2])
c = tf.constant(np.arange(4), dtype=tf.float32, shape=[2,2])
print('a:', a)
print('b:', b)
print('c:', c)
sess = tf.Session()
print('a:', sess.run(a))
print('b:', sess.run(b))
print('c:', sess.run(c))
import tensorflow as tf
import numpy as np
# プレースホルダーを定義
x = tf.placeholder(dtype=tf.float32, shape=[None,3])
print('x:', x)
sess = tf.Session()
X = np.random.rand(2,3)
print('X:', X)
# プレースホルダにX[0]を入力
# shapeを(3,)から(1,3)にするためreshape
print('x:', sess.run(x, feed_dict={x:X[0].reshape(1,-1)}))
# プレースホルダにX[1]を入力
print('x:', sess.run(x, feed_dict={x:X[1].reshape(1,-1)}))
# 定数を定義
a = tf.constant(10)
print('a:', a)
# 変数を定義
x = tf.Variable(1)
print('x:', x)
calc_op = x * a
# xの値を更新
update_x = tf.assign(x, calc_op)
sess = tf.Session()
# 変数の初期化
init = tf.global_variables_initializer()
sess.run(init)
print(sess.run(x))
sess.run(update_x)
print(sess.run(x))
sess.run(update_x)
print(sess.run(x))
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
iters_num = 300
plot_interval = 10
# データを生成
n = 100
x = np.random.rand(n)
d = 12 * x + 10
# ノイズを加える
noise = 0.1
d = d + noise * np.random.randn(n)
# 入力値
xt = tf.placeholder(tf.float32)
dt = tf.placeholder(tf.float32)
# 最適化の対象の変数を初期化
W = tf.Variable(tf.zeros([1]))
b = tf.Variable(tf.zeros([1]))
y = W * xt + b
# 誤差関数 平均2乗誤差
loss = tf.reduce_mean(tf.square(y - dt))
optimizer = tf.train.GradientDescentOptimizer(0.1)
train = optimizer.minimize(loss)
# 初期化
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
# 作成したデータをトレーニングデータとして準備
x_train = x.reshape(-1,1)
d_train = d.reshape(-1,1)
# トレーニング
for i in range(iters_num):
sess.run(train, feed_dict={xt:x_train,dt:d_train})
if (i+1) % plot_interval == 0:
loss_val = sess.run(loss, feed_dict={xt:x_train,dt:d_train})
W_val = sess.run(W)
b_val = sess.run(b)
print('Generation: ' + str(i+1) + '. 誤差 = ' + str(loss_val))
print(W_val)
print(b_val)
# 予測関数
def predict(x):
return W_val * x + b_val
fig = plt.figure()
subplot = fig.add_subplot(1, 1, 1)
plt.scatter(x, d)
linex = np.linspace(0, 1, 2)
liney = predict(linex)
subplot.plot(linex,liney)
plt.show()
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
iters_num = 10000
plot_interval = 100
# データを生成
n=100
x = np.random.rand(n).astype(np.float32) * 4 - 2
d = - 0.4 * x ** 3 + 1.6 * x ** 2 - 2.8 * x + 1 + 2.0 * x ** 3
# ノイズを加える
noise = 0.2
d = d + noise * np.random.randn(n)
# モデル
# bを使っていないことに注意.
xt = tf.placeholder(tf.float32, [None, 4])
dt = tf.placeholder(tf.float32, [None, 1])
W = tf.Variable(tf.random_normal([4, 1], stddev=0.01))
y = tf.matmul(xt,W)
# 誤差関数 平均2乗誤差
loss = tf.reduce_mean(tf.square(y - dt))
optimizer = tf.train.AdamOptimizer(0.001)
train = optimizer.minimize(loss)
# 初期化
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
# 作成したデータをトレーニングデータとして準備
d_train = d.reshape(-1,1)
x_train = np.zeros([n, 4])
for i in range(n):
for j in range(4):
x_train[i, j] = x[i]**j
# トレーニング
for i in range(iters_num):
if (i+1) % plot_interval == 0:
loss_val = sess.run(loss, feed_dict={xt:x_train, dt:d_train})
W_val = sess.run(W)
print('Generation: ' + str(i+1) + '. 誤差 = ' + str(loss_val))
sess.run(train, feed_dict={xt:x_train,dt:d_train})
print(W_val[::-1])
# 予測関数
def predict(x):
result = 0.
for i in range(0,4):
result += W_val[i,0] * x ** i
return result
fig = plt.figure()
subplot = fig.add_subplot(1,1,1)
plt.scatter(x ,d)
linex = np.linspace(-2,2,100)
liney = predict(linex)
subplot.plot(linex,liney)
plt.show()
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
iters_num = 9000
plot_interval = 1000
n = 100
x = np.random.rand(n)*4-2
d = 30*x**2 + 0.5*x + 0.2
#noise = 0.3
#d = d + noise * np.random.randn(n)
xt = tf.placeholder(tf.float32, [None, 3])
dt = tf.placeholder(tf.float32, [None, 1])
W = tf.Variable(tf.zeros([3, 1]))
y = tf.matmul(xt, W)
loss = tf.reduce_mean(tf.square(y - dt))
optimizer = tf.train.AdamOptimizer(0.01)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
d_train = d.reshape(n ,1)
x_train = np.zeros([n, 3])
for i in range(n):
for j in range(3):
x_train[i, j] = x[i]**j
for i in range(iters_num):
if (i+1) % plot_interval == 0:
loss_val = sess.run(loss, feed_dict={xt:x_train, dt:d_train})
W_val = sess.run(W)
print('Generation: ' + str(i+1) + '. 誤差 = ' + str(loss_val))
sess.run(train, feed_dict={xt:x_train,dt:d_train})
print(W_val[::-1])
def predict(x):
result = 0.
for i in range(0, 3):
result += W_val[i,0] * x ** i
return result
fig = plt.figure()
subplot = fig.add_subplot(1, 1, 1)
plt.scatter(x, d)
linex = np.linspace(-2,2,100)
liney = predict(linex)
subplot.plot(linex,liney)
plt.show()
import tensorflow as tf
import matplotlib.pyplot as plt
# logging levelを変更
tf.logging.set_verbosity(tf.logging.ERROR)
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
iters_num = 100
batch_size = 100
plot_interval = 1
# -------------- ここを補填 ------------------------
x = tf.placeholder(tf.float32, [None, 784])
d = tf.placeholder(tf.float32, [None, 10])
W = tf.Variable(tf.random_normal([784, 10], stddev = 0.01))
b = tf.Variable(tf.zeros([10]))
# ------------------------------------------------------
y = tf.nn.softmax(tf.matmul(x, W) + b)
# 交差エントロピー
cross_entropy = -tf.reduce_sum(d * tf.log(y), reduction_indices=[1])
loss = tf.reduce_mean(cross_entropy)
train = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
# 正誤を保存
correct = tf.equal(tf.argmax(y, 1), tf.argmax(d, 1))
# 正解率
accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
accuracies = []
for i in range(iters_num):
x_batch, d_batch = mnist.train.next_batch(batch_size)
sess.run(train, feed_dict={x: x_batch, d: d_batch})
if (i+1) % plot_interval == 0:
print(sess.run(correct, feed_dict={x: mnist.test.images, d: mnist.test.labels}))
accuracy_val = sess.run(accuracy, feed_dict={x: mnist.test.images, d: mnist.test.labels})
accuracies.append(accuracy_val)
print('Generation: ' + str(i+1) + '. 正解率 = ' + str(accuracy_val))
lists = range(0, iters_num, plot_interval)
plt.plot(lists, accuracies)
plt.title("accuracy")
plt.ylim(0, 1.0)
plt.show()
tf.train.GradientDescentOptimizer
__init__(
learning_rate,
use_locking=False,
name='GradientDescent'
)
tf.train.MomentumOptimizer
__init__(
learning_rate,
momentum,
use_locking=False,
name='Momentum',
use_nesterov=False
)
tf.train.AdagradOptimizer
__init__(
learning_rate,
initial_accumulator_value=0.1,
use_locking=False,
name='Adagrad'
)
tf.train.RMSPropOptimizer
__init__(
learning_rate,
decay=0.9,
momentum=0.0,
epsilon=1e-10,
use_locking=False,
centered=False,
name='RMSProp'
)
tf.train.AdamOptimizer
__init__(
learning_rate=0.001,
beta1=0.9,
beta2=0.999,
epsilon=1e-08,
use_locking=False,
name='Adam'
)
import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
import matplotlib.pyplot as plt
# logging levelを変更
tf.logging.set_verbosity(tf.logging.ERROR)
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
iters_num = 3000
batch_size = 100
plot_interval = 100
hidden_layer_size_1 = 1200
hidden_layer_size_2 = 900
dropout_rate = 0.5
x = tf.placeholder(tf.float32, [None, 784])
d = tf.placeholder(tf.float32, [None, 10])
W1 = tf.Variable(tf.random_normal([784, hidden_layer_size_1], stddev=0.01))
W2 = tf.Variable(tf.random_normal([hidden_layer_size_1, hidden_layer_size_2], stddev=0.01))
W3 = tf.Variable(tf.random_normal([hidden_layer_size_2, 10], stddev=0.01))
b1 = tf.Variable(tf.zeros([hidden_layer_size_1]))
b2 = tf.Variable(tf.zeros([hidden_layer_size_2]))
b3 = tf.Variable(tf.zeros([10]))
z1 = tf.sigmoid(tf.matmul(x, W1) + b1)
z2 = tf.sigmoid(tf.matmul(z1, W2) + b2)
keep_prob = tf.placeholder(tf.float32)
drop = tf.nn.dropout(z2, keep_prob)
y = tf.nn.softmax(tf.matmul(drop, W3) + b3)
loss = tf.reduce_mean(-tf.reduce_sum(d * tf.log(y), reduction_indices=[1]))
#optimizer = tf.train.GradientDescentOptimizer(0.5)
#optimizer = tf.train.MomentumOptimizer(0.3, 0.5)
#optimizer = tf.train.AdagradOptimizer(0.3)
#optimizer = tf.train.RMSPropOptimizer(0.001)
optimizer = tf.train.AdamOptimizer(0.01)
train = optimizer.minimize(loss)
correct = tf.equal(tf.argmax(y, 1), tf.argmax(d, 1))
accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
accuracies = []
for i in range(iters_num):
x_batch, d_batch = mnist.train.next_batch(batch_size)
sess.run(train, feed_dict={x:x_batch, d:d_batch, keep_prob:(1 - dropout_rate)})
if (i+1) % plot_interval == 0:
accuracy_val = sess.run(accuracy, feed_dict={x:mnist.test.images, d:mnist.test.labels, keep_prob:1.0})
accuracies.append(accuracy_val)
print('Generation: ' + str(i+1) + '. 正解率 = ' + str(accuracy_val))
lists = range(0, iters_num, plot_interval)
plt.plot(lists, accuracies)
plt.title("accuracy")
plt.ylim(0, 1.0)
plt.show()
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# logging levelを変更
tf.logging.set_verbosity(tf.logging.ERROR)
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
import matplotlib.pyplot as plt
iters_num = 300
batch_size = 100
plot_interval = 10
dropout_rate = 0
# placeholder
x = tf.placeholder(tf.float32, shape=[None, 784])
d = tf.placeholder(tf.float32, shape=[None, 10])
# 画像を784の一次元から28x28の二次元に変換する
# 画像を28x28にreshape
x_image = tf.reshape(x, [-1,28,28,1])
# 第一層のweightsとbiasのvariable
W_conv1 = tf.Variable(tf.truncated_normal([5, 5, 1, 32], stddev=0.1))
b_conv1 = tf.Variable(tf.constant(0.1, shape=[32]))
# 第一層のconvolutionalとpool
# strides[0] = strides[3] = 1固定
h_conv1 = tf.nn.relu(tf.nn.conv2d(x_image, W_conv1, strides=[1, 1, 1, 1], padding='SAME') + b_conv1)
# プーリングサイズ n*n にしたい場合 ksize=[1, n, n, 1]
h_pool1 = tf.nn.max_pool(h_conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')
# 第二層
W_conv2 = tf.Variable(tf.truncated_normal([5, 5, 32, 64], stddev=0.1))
b_conv2 = tf.Variable(tf.constant(0.1, shape=[64]))
h_conv2 = tf.nn.relu(tf.nn.conv2d(h_pool1, W_conv2, strides=[1, 1, 1, 1], padding='SAME') + b_conv2)
h_pool2 = tf.nn.max_pool(h_conv2, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')
# 第一層と第二層でreduceされてできた特徴に対してrelu
W_fc1 = tf.Variable(tf.truncated_normal([7 * 7 * 64, 1024], stddev=0.1))
b_fc1 = tf.Variable(tf.constant(0.1, shape=[1024]))
h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)
# Dropout
keep_prob = tf.placeholder(tf.float32)
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)
# 出来上がったものに対してSoftmax
W_fc2 = tf.Variable(tf.truncated_normal([1024, 10], stddev=0.1))
b_fc2 = tf.Variable(tf.constant(0.1, shape=[10]))
y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)
# 交差エントロピー
loss = -tf.reduce_sum(d * tf.log(y_conv))
train = tf.train.AdamOptimizer(1e-4).minimize(loss)
correct = tf.equal(tf.argmax(y_conv,1), tf.argmax(d,1))
accuracy = tf.reduce_mean(tf.cast(correct, tf.float32))
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
accuracies = []
for i in range(iters_num):
x_batch, d_batch = mnist.train.next_batch(batch_size)
sess.run(train, feed_dict={x: x_batch, d: d_batch, keep_prob: 1-dropout_rate})
if (i+1) % plot_interval == 0:
accuracy_val = sess.run(accuracy, feed_dict={x:x_batch, d: d_batch, keep_prob: 1.0})
accuracies.append(accuracy_val)
print('Generation: ' + str(i+1) + '. 正解率 = ' + str(accuracy_val))
lists = range(0, iters_num, plot_interval)
plt.plot(lists, accuracies)
plt.title("accuracy")
plt.ylim(0, 1.0)
plt.show()