concept
baseline和benchmark有什么区别?
一般用benchmark data 做实验,测试A B C D四个模型,然后以结果最差的一个模型,假设是C,作为baseline,看看其他模型相对C提高了多少。
cifar-10
详细的benchmark 和排名在 classification datasets results 上
这里
inference
「開學了」——正是形容正在「訓練」階段的深度神經網絡最貼切的狀態。神經網絡和所有的學生一樣,通過接受教育,來學習如何完成工作。
確切的說,訓練好的神經網絡,可以根據其所學,在數字化的世界中輕鬆地完成各種各樣的工作,如:識別圖像、識別記錄口述的語言、檢測血液中的疾病,或者推薦符合某人風格的一雙鞋子等等。此時的神經網絡,由於經過了完善的訓練,可以快速高效地從新的數據中「推斷」各種結論。在人工智慧術語中,稱之為「推斷」(Inference)
原文網址:https://kknews.cc/zh-tw/tech/yzp6pa.html
implement trick
1 math.ceil
# python code
import math
math.ceil(x) 此为, 进一法(除了x==整数,整数则保留原样)
2 data augmentation
#水平翻转
tf.image.random_flip_left_right
#随机剪切 固定大小的图片 e.x. 24x24
tf.random_crop
#随机亮度 对比度
tf.image.random_brightness
tf.image.random_contrast
#对数据标准化
tf.image.per_image_whitening
3 初始化weight 并加入L2 regularization(collection)
def variable_with_weight_loss(shape,stddev,wl):
var = tf.Variable(tf.truncated_normal(shape,stddev))
if wl is not None:
weight_loss = tf.multiply(tf.nn.l2_loss(var),wl,name="weight_loss")
tf.add_to_collection('losses',weight_loss)
return var
不必所有卷积层都加
wl = 0, 不加 L2
wl > 0, 加 L2
4 卷积层的kernel shape
variable_with_weight_loss(shape=[5,5,3,64],stddev=5e-2,wl=0)
[5,5,3,64]
5 x 5 x 3 kernel 大小啊,有64个。。。 健忘如我
5
weight1 = variable_with_weight_loss( shape=[5,5,3,64], stddev=5e-2, wl=0.0 )
kernel1 = tf.nn.conv2d( image_holder, weight1, [1,1,1,1], padding='SAME' )
bias1 = tf.Variable( tf.constant( 0.0, shape=[64] ) )
conv1 = tf.nn.relu( tf.nn.bias_add( kernel1, bias1 ) )
pool1 = tf.nn.max_pool(conv1, ksize = [1,3,3,1], strides=[1,2,2,1], padding='SAME' )
最后的
pool1 = tf.nn.max_pool(conv1, ksize = [1,3,3,1], strides=[1,2,2,1], padding=‘SAME’ )
ksize 池化kernel大小 3x3
往右走 2 步, 往下走 2 步
ksize = [1,3,3,1], strides=[1,2,2,1]
loss放到collection计算
def lossFcn( logits, labels ):
labels = tf.cast( labels, tf.int64 )
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits( logits=logits, labels=labels, name='cross_entropy_per_example' )
cross_entropy_mean = tf.reduce_mean( cross_entropy, name = 'cross_entropy' )
tf.add_to_collection( 'losses', cross_entropy_mean )
return tf.add_n( tf.get_collection( 'losses' ), name = 'total_loss' )
快速求accuracy
top_k_op = tf.nn.in_top_k(logits,label_holder,1)
多线程运作
tf.train.start_queque_runners()
“<\b\r/>\” 强行换行
时间不够,就用了别人的code,有时间在磕啦