LoginSignup
0
3

More than 5 years have passed since last update.

2月度勉強会で調べた事項

Last updated at Posted at 2017-02-25

Mooc(Udacity, Coursera)で機械学習(Scikit-learn, TensorFlow)をやってました。

Mooc

Andrew Ng先生のが有名だけど、Googleの提供しているDeep Learning - UdacityはScikit-learnとかTensorFlowとか扱っているのがいい感じ

Neural Networks for Machine Learning

  • Hinton先生
  • 実行環境がOctaveだった
  • 諦めてインストールしたけれど今回はそれで終わり

Deep Learning - Udacity

  • 課題がJupyter Notebookで与えられるのがすごくいい(動く!)
  • 理論面は物足りないかも
  • 「あ、苦労してるんだな」って言うシーンがいくつかあるのでオススメ

Deep Learning - Udacity

Setup

Scikit-learn

Scikit-learn

Python : 共通する要素の取り出し

v = [1,2,3]
w = [2,3,4]
[x for x in v if x in w] # [2,3]

TensorFlow

Tensorflowで同じタスクを実行する内容だった。

UNADJUSTEDNONRAW_thumb_1c0e.jpg

こんな感じで3層NNを作ってaccuracy 94.2%を達成したので満足した。
コードの一部を抜き出すとこんな感じ。

def weight_variable(shape):
  initial = tf.truncated_normal(shape, stddev=1.732/sum(shape))
  return tf.Variable(initial)

def bias_variable(shape):
  initial = tf.constant(0.1, shape=shape)
  return tf.Variable(initial)

batch_size = 128
hidden_layer_size = 1024
input_layer_size = 28*28
output_layer_size = 10

graph = tf.Graph()
with graph.as_default():
    # Input data. For the training data, we use a placeholder that will be fed
    # at run time with a training minibatch.
    tf_train_dataset = tf.placeholder(tf.float32, shape=(batch_size, image_size * image_size))
    tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels))
    tf_valid_dataset = tf.constant(valid_dataset)
    tf_test_dataset = tf.constant(test_dataset)

    # Variables
    weight1 = weight_variable( (input_layer_size, hidden_layer_size) )
    bias1 = bias_variable( [hidden_layer_size] )

    # Hidden Layer
    hidden_layer = tf.nn.relu(tf.matmul(tf_train_dataset, weight1) + bias1)

    # Variables
    weight2 = weight_variable( (hidden_layer_size, output_layer_size) )
    bias2 = bias_variable( [output_layer_size] )

    logits = tf.matmul(hidden_layer, weight2) + bias2
    loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=tf_train_labels))

    # optimizer
    optimizer = tf.train.AdamOptimizer(0.001).minimize(loss)
    # optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)

    # prediction
    train_prediction = tf.nn.softmax(logits)
    valid_prediction = tf.nn.softmax(tf.matmul(tf.nn.relu(tf.matmul(tf_valid_dataset, weight1) + bias1), weight2) + bias2)
    test_prediction = tf.nn.softmax(tf.matmul(tf.nn.relu(tf.matmul(tf_test_dataset, weight1) + bias1), weight2) + bias2)

0
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3