Chrome에서 티스토리 임시저장이 자동으로 안되는 이유

흔치않은일상 2017. 12. 31. 15:53


 언제부터 였는지 모르지만 어느 순간부터 Tistory에서 제가 자주 사용하였던 기능 중 하나인 '임시저장' 기능이 크롬에서 자동으로 사용할 수 없게 되어 버렸습니다.




 위에서 보시는 바와 같이 크롬으로 Tistory 글쓰기를 하였을 경우 임시저장이 괄호 속이 (...) 상태로 남은 채로 자신이  작성한 글이 자동으로 저장되지 않는 것을 보실 수 있습니다.


 이유는 알고보니 Adobe 사의 Flash 지원이 2020년을 기점으로 서비스 지원을 종료하게 되었는데 이에 대비하여 Chrome은 Flash를 2020년부터 지원을 종료할 예정이며 차후 이를 HTML5로 대처해 나갈 예정이라고 합니다. 관련 내용에 대해 알고 싶으신 분은 아래 사이트의 글을 참조해 주시길 바랍니다.



Flash & The Future of Interactive Content

https://theblog.adobe.com/adobe-flash-update/


 현재 Tistory의 임시저장은 Flash를 기반으로 동작하기 때문에 이를 Chrome에서 사용하게 되면 위와 같이 비활성 상태로 동작을 하지 않습니다. 다만, Flash가 종료되는 2020년 전까지는 Chrome에서 Flash를 임시방편으로 사용할 수는 있습니다. 임시저장 버튼 바로 위쪽에 위치한 별 아이콘 왼쪽의 아이콘을 클릭하면 아래와 같은 안내가 나타납니다.



 위의 경우 이번에만 플래시 실행을 클릭하면 곧바로 임시저장 기능을 사용할 수 있습니다. 당장은 일일히 이러한 과정을 거쳐야 하기 때문에 포스팅을 임시저장 하는 것이 상당히 불편할 것으로 예상됩니다. 아마도 카카오에서 임시저장을 Flash가 아닌 다른 방식으로 지원하는 방법을 찾게 된다면 지금보다 더 쉽게 임시저장 기능을 사용할 수 있을 것으로 기대됩니다.

300x250

Regular Point(정칙점), Singular Point(특이점)

공대생의 팁 2017. 11. 27. 20:33

 Regular Point에 대해 알기 위해서는 Singular Point에 대해 제대로 알아야 할 필요가 있습니다.


EX) 미분방정식 x' = f(x), 그리고 이 식과 연계된 dynamical system φ(t,x)가 위상공간 Ω 상에 존재할 때 Point x에 대해 나타내고자 할 때


Singular Point - x ∈ Ω이고 f(x) = 0일 때 모든 t ∈ R 일 때 φ(t,x) = x인 점

Regular Point - x ∈ Ω이고 해당 x가 Singular Point에 포함되지 않을 때


 즉, Regular Point는 특정한 공간 내에서 특정한 점을 나타내는 특이점(Singular point)를 제외한 모든 점이라는 것을 알 수 있습니다. 위의 조건을 통해 아래의 예제를 알 수 있습니다.


EX) 기울기 벡터 ∇h1(x*), ... ,∇hm(x*) 가 linearly independent(선형 독립)일 때, h1(x*)=0, ... , hm(x*)=0를 만족하는 x*는 regular point이다.


 이는 x*가 각 함수를 0으로 만들지만 각 함수의 미분함수인 기울기 벡터의 값이 각 함수의 값에 영향을 주고 있지 않기 때문에 해당 구간을 regular point라고 말할 수 있는 것입니다.

300x250

Tensorflow에서 특정한 변수만 최적화하는 방법(How to train particular variable in Tensorflow)

공대생의 팁 2017. 11. 26. 16:15


 최근 Tensorflow를 공부하면서 강화학습을 공부하고 있습니다. 오랜만에 Python을 다루는 것이기도 하며 인공신경망 기반의 인공지능도 구현할 수 있어 간단한 인공지능도 구현해보기도 합니다.


 이번 포스팅에서는 train을 하는 과정에서 특정한 변수만을 사용하여 조건을 minimize 하는 방법에 대해 알아보도록 하겠습니다.


 다음은 특정 Neural Network의 Output을 구현하는 과정을 나타낸 것입니다. 첫 번째 Output에서는 모든 Variable들을 훈련시키고 이후 새로운 Output을 구현하여 해당 Output layer만 minimize를 적용해보는 과정을 살펴볼 것입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
y_ = tf.placeholder(tf.float32, shape=[None, 9])
y_add = tf.placeholder(tf.float32, shape=[None, 10])
 
# Output layer(first)
W_fc2 = tf.Variable(tf.truncated_normal([5009], stddev=0.1))
b_fc2 = tf.Variable(tf.constant(0.1, shape=[9]))
y_hat=tf.nn.softmax(tf.matmul(h_fc1, W_fc2) + b_fc2)
 
# Output layer(additional)
W_fc3 = tf.Variable(tf.truncated_normal([50010], stddev=0.1))
b_fc3 = tf.Variable(tf.constant(0.1, shape=[10]))
y_hat2=tf.nn.softmax(tf.matmul(h_fc1, W_fc3) + b_fc3)
 
# Train and Evaluate the Model
cross_entropy = - tf.reduce_sum(y_*tf.log(y_hat))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
 
# Addition layer train
cross_entropy2 = -tf.reduce_sum(y_add*tf.log(y_hat2))
add_train = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy2, var_list=[W_fc3, b_fc3])
cs


 위 소스코드를 살펴보았을 때 두 개의 cross_entropy를 구현하였습니다. 첫 번째 output layer는 구현된 Neural Network 전체를 대상으로 최적화를 수행함으로 Optimizer 함수에서 cross_entropy를 변수로 하여 값을 구현합니다.


 다음으로 구현되는 cross_entropy2는 새로운 Output layer를 구현하여 기존의 output layer를 대체하게 됩니다. 이 때 기존에 구현된 Neural Network는 그대로 사용한 채 새로운 Output layer를 대상으로 Minimize를 수행하고자 합니다. 이 Optimizer 함수에서 cross_entropy2 변수 뿐 아니라 var_list 변수에 특정 변수만 최적화 시킬 수 있도록 설정할 수 있습니다. 이 때 해당 변수명을 list [] 형식으로 변수들을 입력해두면 해당 변수만 훈련되는 것을 직접 확인하실 수 있습니다.


300x250