You are on page 1of 10

Tensorflow:

DataSeT: http://www.image-net.org/download-images
Tiny ImageNet :https://tiny-imagenet.herokuapp.com/

Source:
1. zllrunning/Deep-Steganography: https://github.com/zllrunning/Deep-
Steganography/blob/master/main.py
2. Marcovaldong/ISGAN: https://github.com/Marcovaldong/ISGAN
3. IuliaDuta/Stegano: https://github.com/IuliaDuta/Stegano/blob/master/Stegano/main.py
4.krishvishal/DeepSteganography:
https://github.com/krishvishal/DeepSteganography/blob/master/trainer.py
5. fpingham/DeepSteg: https://github.com/fpingham/DeepSteg
6. arnoweng/PyTorch-Deep-Image-Steganography: https://github.com/arnoweng/PyTorch-Deep-
Image-Steganography
7. arnoweng/PyTorch-Deep-Image-Steganography :
https://github.com/adamcavendish/Deep-Image-Steganography
8. fpingham/DeepSteg : https://github.com/fpingham/DeepSteg
9. harveyslash/Deep-Steg-JS: https://github.com/harveyslash/Deep-Steg-JS
10. rokkuran/stegasawus: https://github.com/rokkuran/stegasawus
11. daniellerch/aletheia https://github.com/daniellerch/aletheia
12. arthurPrvst/Steganography: https://github.com/arthurPrvst/Steganography
13. harveyslash/Deep-Steg-JS : https://github.com/harveyslash/Deep-Steg-JS

Bài báo:
1. StegNet: Mega Image Steganography Capacity with Deep Convolutional Network
https://arxiv.org/pdf/1806.06357.pdf
2. adamcavendish/Deep-Image-Steganography:
http://cs231n.stanford.edu/reports/2017/pdfs/101.pdf
3. Hiding Images in Plain Sight: Deep Steganography
http://www.esprockets.com/papers/nips2017.pdf
4. Invasive Species Detection, Christy Dennison Charles Hale:
http://cs231n.stanford.edu/reports/2017/pdfs/101.pdf
5. https://en.wikipedia.org/wiki/YCbCr
Nguồn Lạ:
1. https://gsurma.github.io/
2. https://medium.com/@jason_trost/collection-of-deep-learning-cyber-security-research-papers-
e1f856f71042

Nguồn Audio:
1. https://github.com/Charleswyt/tf_audio_steganalysis/tree/master/paper
2.
Báo cáo
1. ĐỊnh nghĩa

Tensorflow:
Tensor là một mảng có n chiều (n-dimensional array). Chẳng hạn như:
 0-d tensor, còn được gọi là scalar hay chỉ là một số. Ví dụ: 1, 2, -5
 1-d tensor, còn được gọi là vector. Ví dụ: [1 2 3 4], [5 8 7 9]
 2-d tensor, còn được gọi là ma trận(matrix). Ví dụ: [1 2 3; 4 5 6; 7 8 9]
 …
 n-D tensor
Định nghĩa một Graph
0
1 import tensorflow as tf
2 a = tf.add(3, 5)
3 // Hoặc
4 import tensorflow as tf
5 x = tf.constant(3)
6 y = tf.constant(5)
7 a = tf.add(x, y)
8
Và bạn sẽ có biểu diễn trên TensorBoard như sau:
một đồ thị có đỉnh(node) và các cạnh(edge)
node là các toán tử, hằng số, biến còn cạnh sẽ là các Tensor.

TensorFlow = tensor + flow= data + flow => luồng của các dữ liệu.

0
1 import tensorflow as tf
2 a = tf.add(3, 5)
3 print(a)
4
5 >> Tensor("Add:0", shape=(), dtype=int32)
6
Oh, không phải là con số 8 mà chúng ta đang nghĩ. Đó là bởi chúng ta mới chỉ đang xây dựng
graph chứ chưa hề đến bước tính toán.

Làm sao để lấy được giá trị ở a?

Tạo một Session và gán nó vào một biến(sess) để có thể sử dụng về sau.

Trong Session đó, thực thi bước tính toán của đồ thị để lấy ra giá trị của a.

0
1 import tensorflow as tf
2 a = tf.add(3, 5)
3 sess = tf.Session()
4 print(sess.run(a))
5 sess.close()
6
7 >> 8
8
Khi thực thi câu lệnh sess.run(a) session sẽ tự động tìm kiếm và tính toán trên tất cả các node cần
để có được kết quả của a.

Bạn có thể sửa lại đoạn code trên để session tự đóng sau khi xong việc

0
1 import tensorflow as tf
2 a = tf.add(3, 5)
3 with tf.Session() as sess:
4 print(sess.run(a))
5
tf.Session()

Session là môi trường để TF thực thi. Và đó cũng là nơi để các Tensor object được tính toán

Session cũng đồng thời cấp phát bộ nhớ để lưu giữ giá trị của các biến(Variables)

Một ví dụ Graph khác

0
1x=2
2y=3
3 op1 = tf.add(x, y)
4 op2 = tf.multiply(x, y)
5 op3 = tf.pow(op2, op1)
6 with tf.Session() as sess:
7 op3 = sess.run(op3)
8
Sẽ có biểu diễn trên TensorBoard như sau:

SubGraphs
Nhìn hình phía trên, bởi vì chúng ta chỉ cần giá trị của pow_op mà pow_op lại không phụ thuộc
gì vào useless . Do đó, session trong trường hợp này sẽ không tính giá trị của useless -> Tiết
kiệm cho việc tính toán

Nhưng nếu bạn muốn lấy cả giá trị của pow_op và uselessthì phải làm sao? Đây là giải pháp

0
1x=2
2y=3
3 add_op = tf.add(x, y)
4 mul_op = tf.multiply(x, y)
5 useless = tf.multiply(x, add_op)
6 pow_op = tf.pow(add_op, mul_op)
7 with tf.Session() as sess:
8 z, not_useless = sess.run([pow_op, useless])
9
Bạn chỉ cần truyền vào list các tensor mà bạn cần tính toán giá trị của nó. Chính là tham
số fetches trong cú pháp của Session.run()

0
1 tf.Session.run(fetches,
2 feed_dict=None,
3 options=None,
4 run_metadata=None)
5
tf.Graph()

Lưu ý: Khi import thư viện tensorflow, một graph mặc định đã được tạo ra

Tạo mới 1 graph

0
1 g = tf.Graph()
2

Quản lý graph default

0
1 g = tf.get_default_graph()
2

Thêm 1 node vào graph vừa tạo

Cần set graph đó là graph default trước khi thêm

0
1 g = tf.Graph()
2 with g.as_default():
3 x = tf.add(3, 5)
4 with tf.Session() as sess:
5 sess.run(x)
6
Tránh nhầm lẫn giữa graph default và graph được tạo bởi người dùng => gây phát sinh lỗi về
sau. Xem ví dụ sau:

0
1 g = tf.Graph() // Tạo mới graph
2 # thêm vào default graph
3 a = tf.constant(3)
4 # Thêm vào graph tạo bởi người dùng
5 with g.as_default():
6 b = tf.constant(5)
7
Trong trường hợp có 2 graph, hãy lưu ý khi thêm các ops(operations):

0
1 g1 = tf.get_default_graph()
2 g2 = tf.Graph()
3 # add ops to the default graph
4 with g1.as_default():
5 a = tf.Constant(3)
6 # add ops to the user created graph
7 with g2.as_default():
8 b = tf.Constant(5)
9
Tuy nhiên, KHÔNG NÊN tạo 2 graph nếu không thực sự cần thiết. Bởi:

 Nhiều graph cũng sẽ cần nhiều session, mỗi session lại sử dụng các tài nguyên gây
lãng phí
 Không thể chia sẻ dữ liệu giữa các graph
 Giải pháp sử dụng subgraph trong 1 graph là tốt hơn

Tại sao TF sử dụng Graph?

1. Tối ưu trong tính toán. Cho phép chỉ tính toán các node cần để có được giá trị bạn
muốn
2. Chia bài toán thành các module nhỏ, giúp graph nhận biết module nào cần cho bài
toán
3. Tính toán phân tán, song song trên nhiều CPU, TPU, GPU hoặc trên nhiều máy
4. Nhiều mô hình máy học sử dụng graph để học và biểu diễn(visualize)

tf.constant(value, dtype=None, shape=None, name='Const', verify_shape=False)

Ví dụ:

0
1 import tensorflow as tf
2 a = tf.constant([2, 2], name='a')
3 b = tf.constant([[0, 1], [2, 3]], name='b')
4 x = tf.multiply(a, b, name='mul')
5 with tf.Session() as sess:
6 print(sess.run(x))
7
8 # >> [[0 2]
9 # [4 6]]
10
Tạo các Tensor với các giá trị đặc biệt

tf.zeros(shape, dtype=tf.float32, name=None)

Tạo một tensor có kích thước là shape, và tất cả các phần tử đều có giá trị 0.

0
1 tf.zeros([2, 3], tf.int32) ==> [[0, 0, 0], [0, 0, 0]]
2

tf.zeros_like(input_tensor, dtype=None, name=None, optimize=True)

Tạo một tensor có kích thước và kiểu dữ liệu giống với input_tensor(trừ khi
kiểu dữ liệu được chỉ định) và tất cả các phần tử đều có giá trị 0.

0
1 # input_tensor is [[0, 1], [2, 3], [4, 5]]
2 tf.zeros_like(input_tensor) ==> [[0, 0], [0, 0], [0, 0]]
3

tf.ones(shape, dtype=tf.float32, name=None)


tf.ones_like(input_tensor, dtype=None, name=None, optimize=True)

You might also like