学習変数初期化 |
|
## 学習に必要な変数の初期化
x = tf.placeholder(tf.float32, shape=[None, IMG_LENGTH])
y_ = tf.placeholder(tf.float32, shape=[None, LABEL_CNT])
## http://blog.brainpad.co.jp/entry/2016/02/25/153000
# 第一層のweightsとbiasのvariable
W_conv1 = tf.Variable(tf.truncated_normal([CONV1_PATCH_SIZEX, CONV1_PATCH_SIZEY, CHANNELS, CONV1_OUTPUT], stddev=0.1))
b_conv1 = tf.Variable(tf.constant(0.1, shape=[CONV1_OUTPUT]))
x_image = tf.reshape(x, [-1,IMG_SIZEX,IMG_SIZEY,CHANNELS])
h_conv1 = tf.nn.relu(tf.nn.conv2d(x_image, W_conv1, strides=[1, 1, 1, 1], padding='SAME') + b_conv1)
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([CONV2_PATCH_SIZEX, CONV2_PATCH_SIZEY, CONV1_OUTPUT, CONV2_OUTPUT], stddev=0.1))
b_conv2 = tf.Variable(tf.constant(0.1, shape=[CONV2_OUTPUT]))
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')
W_fc1 = tf.Variable(tf.truncated_normal([int(IMG_SIZEX /4*IMG_SIZEY/4*CONV2_OUTPUT), 1024], stddev=0.1))
b_fc1 = tf.Variable(tf.constant(0.1, shape=[1024]))
h_pool2_flat = tf.reshape(h_pool2, [-1, int(IMG_SIZEX /4 * IMG_SIZEY /4*CONV2_OUTPUT)])
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)
# Dropout
keep_prob = tf.placeholder("float")
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)
# 出来上がったものに対してSoftmax
W_fc2 = tf.Variable(tf.truncated_normal([1024, LABEL_CNT], stddev=0.1))
b_fc2 = tf.Variable(tf.constant(0.1, shape=[LABEL_CNT]))
y_conv=tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2) + b_fc2)
# 交差エントロピー
#cross_entropy = -tf.reduce_sum(y_*tf.log(y_conv))
cross_entropy = tf.reduce_sum(tf.square(y_conv-y_))
# 今回はGradientDescentOptimizerではなく、AdamOptimizer
#train_step = tf.train.AdamOptimizer(1e-7).minimize(cross_entropy)
train_step = tf.train.GradientDescentOptimizer(1e-5).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
|
教師データのCSVファイルの内容
最後の行は改行しないこと. |
|
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708021509.jpg,0
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708021519.jpg,1
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708031509.jpg,0
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708031519.jpg,1
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708041509.jpg,0
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708041519.jpg,1
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708051509.jpg,0
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708051519.jpg,1
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708061509.jpg,0
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708061519.jpg,1
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708071509.jpg,0
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708071519.jpg,1
https://ftp.yz.yamagata-u.ac.jp/pub/camera/AXIS_000/201708081509.jpg,0
(最後の行は改行しないこと)
|