예제 #1
0
import cnn_module as cnn
import numpy as np
import threading

# 데이타
X = np.array([[0,0], [0,1], [1,0], [1,1]], np.float32)
Y = np.array([0,1,1,0], np.float32)
dataLayer = cnn.createDatasetLayer(X, Y)
# 가중치들

W1 = np.float32(np.random.randn(2,4,5))
B1 = np.float32(np.random.randn(20))
W2 = np.float32(np.random.randn(20,1))
B2 = np.float32(np.random.randn(1))

learning_rate = 0.02
optimizer = cnn.createSGD(learning_rate)

#"""
# 2층 구조의 네트워크 생성
with cnn.NetworkBuilder() as builder:
    builder.createNetwork(5)
    builder.addFCLayer(W1, B1)
    builder.addBatchnormLayer()
    builder.addReluLayer()
    #builder.addSigmoidLayer()
    builder.addFCLayer(W2, B2)
    #builder.addReluLayer()
    builder.addSigmoidLayer()
    mainNetwork = builder.getNetwork()
예제 #2
0
# 몇백만에서 5만까지 학습(encoder & decoder)
# 학습은 X->X
# 몇백만에서 몇 만까지 학습할때 로컬 최소 문제가 흔하게 생김
# 이때 Ada의 학습 둔화 운동량을 초기화 함

# X->Y로 바꾸고 다시 학습 (23만으로 loss가 늘어남)
# 순전파는 모든 네트워크를 사용
# 학습할 때는 decoder만 backward 및 update
# encoder가 X->X에 최적화가 됬다는 것이 포인트!

########################################################

# 데이터 레이어 생성
dataList = gis_data.load()

dataLayer = cnn.createDatasetLayer(dataList[0], dataList[1])  # 40, 3, 200, 200
testDataLayer = cnn.createDatasetLayer(dataList[2],
                                       dataList[3])  # 10, 3, 200, 200

# 옵티마이저 생성

print("가중치 이름을 입력하세요. 만들지 않으면 gis_weight.py를 실행하여 데이터를 만드세요")
weightList = gis_weight.loadWeight(input())

#incoder 네트워크 생성
with cnn.NetworkBuilder() as builder:
    builder.createNetwork(6)
    builder.addConv3dLayer(weightList[2], weightList[3], weightList[1], 0, 0)
    builder.addBatchnormLayer()
    builder.addReluLayer()
    builder.addFCLayer(weightList[4], weightList[5])
예제 #3
0
# 신경망 결과를 그려줍니다.
visible = False

# 연구 결과################

# 히 초기와랑 싸비어 초기화 없으면 loss가 몇싶만 부터 출발함...
# 적용하면 몇천때 부터 시작

# batch norm이 없으면 loss가 떨어 지지 않음.

###########################

# 데이터 레이어 생성
dataList = gis_data.load()

dataLayer = cnn.createDatasetLayer(dataList[0], dataList[0]) # N, 3, 200, 200
print("dataList[0]", dataList[0].shape)

# 옵티마이저 생성
optimizer = cnn.createAda(0.018)

print("가중치 이름을 입력하세요. 만들지 않으면 gis_weight.py를 실행하여 데이터를 만드세요")
weightList = gis_weight.loadWeight(input())

#incoder 네트워크 생성
with cnn.NetworkBuilder() as builder:
    builder.createNetwork(6)
    builder.addConv3dLayer(weightList[2], weightList[3], weightList[1], 0, 0)
    builder.addBatchnormLayer()
    builder.addReluLayer()
    builder.addFCLayer(weightList[4], weightList[5])
예제 #4
0
import cnn_module as cnn
import numpy as np
import gis_data2 as gis_data
import gis_weight

# 데이터 레이어 생성
dataList = gis_data.load()

dataLayer = cnn.createDatasetLayer(dataList[0], dataList[1])

# 옵티마이저 생성
optimizer = cnn.createAda(0.018)

weightList = gis_weight.loadWeight('data2_1')

#encoder 네트워크 생성
with cnn.NetworkBuilder() as builder:
    builder.createNetwork(6)
    builder.addConv3dLayer(weightList[2], weightList[3], weightList[1], 0, 0)
    builder.addBatchnormLayer()
    builder.addReluLayer()
    builder.addFCLayer(weightList[4], weightList[5])
    builder.addBatchnormLayer()
    builder.addReluLayer()
    encoderNet = builder.getNetwork()

#decoder 네트워크 생성
with cnn.NetworkBuilder() as builder:
    builder.createNetwork(5)
    builder.addFCLayer(weightList[6], weightList[7])
    builder.addBatchnormLayer()