반응형

assertion failed: [0] [Op:Assert] name: EagerVariableNameReuse

 

import os
os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = "true"

stackoverflow.com/questions/61200676/tensorflow2-1-invalidargumenterror-assertion-failed-0-opassert-name-eage

반응형
반응형

yolov5의 모델 그냥 저장시 무거워서 dict까지 저장하면 가벼워진다.

from models.yolo import Model
import torch
device = torch.device("cpu")
yaml_path='./dataset/test.yaml'
#yaml_path = './models/yolov5m.yaml'
new_weights='./best.pt'
model = Model(yaml_path).to(device)
trained_model = torch.load(new_weights,map_location=device)['model'].to(device)
torch.save(trained_model, 'best_1.pt')

 

오류 처리시 사용한 yaml의 내용을 참조하여 추가하면 된다.

반응형

'Deep learning > 소스' 카테고리의 다른 글

yolov5 coco data set training  (0) 2021.09.17
classification mnist-LeNet-5  (0) 2021.04.03
classification model code  (0) 2021.01.14
python 한국 시간으로 설정  (0) 2020.11.17
20201110-yolov5로 데이터 학습  (2) 2020.11.04
반응형

cs50

 

1.Linear Search

왼쪽부터 오른쪽으로 하나하나씩 조회한다.

 

랜덤으로 되여있다.

o(n)

 

2. binary search

sord 되여있는 것을 

중간 중간 이런식으로 한다.

bi => two

divide conquer

o(log n)

 

big O -> O worst case

 

 

3. bubble sort

bubble sort 옆에 있는것과 비교하여 바꾼다.

 i , i+1

i 위치에 있는것 이 i+1 보다 크면 바꾼다.

O(n**2)

 

4. selection sort

한줄 보면서 제일  작은 것을 기억해서 처음과 잴 작은 것을 바꾼다.

0-> n-1

n(n-1)/ 2 => O(n**2)

 

5. insertion sort

 

 

6. recursion

left right 나누어서 한다. 

 

7. merge sort

left , rigth  따로 따로 하고 합친다.

7 4 5 2   6 3 8 1

4 7     

4 7 2 5

2 4 5 7 

 

6 3 8 1

3 6 1 8

1 3 6 8

 

2 4 5 7 1 3 6 8

 O( n log n )

 

 

반응형

'Deep learning > 개념' 카테고리의 다른 글

Optimizer  (0) 2021.03.27
Activation Function  (0) 2021.03.27
DBN  (0) 2021.03.27
top-1 and top-5  (0) 2020.08.18
선형회귀분석 ,군집화 ,다층 계층 신경망 ,병렬처리 ,부록 A: 한국어판 : 순환 신경망과 LSTM  (0) 2020.08.18
반응형

1. LeNet-5 코드 

1-1 LeNet-5 코드 function api 

from tensorflow.keras.layers import Conv2D,Dense,Flatten,Input,AveragePooling2D
from tensorflow.keras import Model

image_input = Input(shape=(32, 32, 1))
x = Conv2D(6, kernel_size= (5,5), strides=1,  activation = 'relu')(image_input)
x = AveragePooling2D(2)(x)
x = Conv2D(16, kernel_size= (5,5),strides=1, activation = 'relu')(x)
x = AveragePooling2D(2)(x)

x = Flatten()(x)
x= Dense(units = 120, activation = 'relu')(x)
x= Dense(units = 84, activation = 'relu')(x)
output = Dense(10, activation='softmax')(x)
model = Model(image_input, output)
model.summary()

 

1-2 LeNet-5 

import keras 
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense

model = Sequential()

#Layer 1
#Conv Layer 1
model.add(Conv2D(filters = 6, kernel_size = 5, strides = 1, activation = 'relu', input_shape = (32,32,1)))

#Pooling layer 1
model.add(MaxPooling2D(pool_size = 2, strides = 2))

#Layer 2
#Conv Layer 2
model.add(Conv2D(filters = 16, kernel_size = 5,strides = 1,activation = 'relu'))

#Pooling Layer 2
model.add(MaxPooling2D(pool_size = 2, strides = 2))

#Flatten
model.add(Flatten())

#Layer 3
#Fully connected layer 1
model.add(Dense(units = 120, activation = 'relu'))

#Layer 4
#Fully connected layer 2
model.add(Dense(units = 84, activation = 'relu'))

#Layer 5
#Output Layer
model.add(Dense(units = 10, activation = 'softmax'))
model.summary()

 

AlexNet keras 코드

# 5 convolutional laysers, 3 maxpooling , 3 fully connected
import keras 
from keras.models import Sequential
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D,Dropout
from keras.layers import Flatten
from keras.layers import Dense

model = Sequential()
model.add(Convolution2D(96, (11, 11), strides=(4, 4), input_shape = (224,224,3),padding='SAME',  activation='relu'))
model.add(MaxPooling2D((3,3) , strides = 2))

model.add(Convolution2D(256, (5, 5), padding = 'same', activation='relu'))
model.add(MaxPooling2D((3,3) , strides = 2))

model.add(Convolution2D(384, (3, 3), padding = 'same', activation='relu'))

model.add(Convolution2D(384, (3, 3), padding = 'same', activation='relu'))

model.add(Convolution2D(256, (3, 3), padding = 'same', activation='relu'))
model.add(MaxPooling2D((3,3) , strides = 1))

model.add(Flatten())
model.add(Dense(4096, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(4096, activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(1000, activation = 'softmax'))

model.summary()

 

VGG코드

VGG16 tensorlfow 코드

import tensorflow as tf
model = tf.keras.applications.VGG16(
    include_top=True, weights='imagenet', input_tensor=None,
    input_shape=None, pooling=None, classes=1000,
    classifier_activation='softmax'
)
model.summary()

block 1 2 1

block 2 2 1

block 3 2 1

block 4 2 1

block 5 3 1

flatten

dense 3

 

from tensorflow.keras.layers import Conv2D,Dense,Flatten,Input,MaxPooling2D
from tensorflow.keras import Model

image_input = Input(shape=(224, 224, 3))
x = Conv2D(64, kernel_size= (3,3), padding='same',name='block1_conv1')(image_input)
x = Conv2D(64, kernel_size= (3,3), padding='same',name='block1_conv2')(x)
x = MaxPooling2D(2 ,name ='block1_pool')(x)

x = Conv2D(128, kernel_size= (3,3), padding='same',name='block2_conv1')(x)
x = Conv2D(128, kernel_size= (3,3), padding='same',name='block2_conv2')(x)
x = MaxPooling2D(2 ,name ='block2_pool')(x)


x = Conv2D(256, kernel_size= (3,3), padding='same',name='block3_conv1')(x)
x = Conv2D(256, kernel_size= (3,3), padding='same',name='block3_conv2')(x)
x = MaxPooling2D(2 ,name ='block3_pool')(x)

x = Conv2D(512, kernel_size= (3,3), padding='same',name='block4_conv1')(x)
x = Conv2D(512, kernel_size= (3,3), padding='same',name='block4_conv2')(x)
x = MaxPooling2D(2 ,name ='block4_pool')(x)

x = Conv2D(512, kernel_size= (3,3), padding='same',name='block5_conv1')(x)
x = Conv2D(512, kernel_size= (3,3), padding='same',name='block5_conv2')(x)
x = Conv2D(512, kernel_size= (3,3), padding='same',name='block5_conv3')(x)
x = MaxPooling2D(2 ,name ='block5_pool')(x)

x = Flatten()(x)
x= Dense(units = 4096, activation = 'relu',name='fc1')(x)
x= Dense(units = 4096, activation = 'relu',name='fc2')(x)
output = Dense(1000, activation='softmax' ,name='predictions')(x)
model = Model(image_input, output)
model.summary()

www.tensorflow.org/api_docs/python/tf/keras/applications/VGG16

 

tf.keras.applications.VGG16  |  TensorFlow Core v2.4.1

Instantiates the VGG16 model.

www.tensorflow.org

VGG19 tensorlfow 코드

import tensorflow as tf
model = tf.keras.applications.VGG19(
    include_top=True, weights='imagenet', input_tensor=None,
    input_shape=None, pooling=None, classes=1000,
    classifier_activation='softmax'
)
model.summary()
from tensorflow.keras.layers import Conv2D,Dense,Flatten,Input,MaxPooling2D
from tensorflow.keras import Model

image_input = Input(shape=(224, 224, 3))
x = Conv2D(64, kernel_size= (3,3), padding='same',name='block1_conv1')(image_input)
x = Conv2D(64, kernel_size= (3,3), padding='same',name='block1_conv2')(x)
x = MaxPooling2D(2 ,name ='block1_pool')(x)

x = Conv2D(128, kernel_size= (3,3), padding='same',name='block2_conv1')(x)
x = Conv2D(128, kernel_size= (3,3), padding='same',name='block2_conv2')(x)
x = MaxPooling2D(2 ,name ='block2_pool')(x)


x = Conv2D(256, kernel_size= (3,3), padding='same',name='block3_conv1')(x)
x = Conv2D(256, kernel_size= (3,3), padding='same',name='block3_conv2')(x)
x = Conv2D(256, kernel_size= (3,3), padding='same',name='block3_conv3')(x)
x = Conv2D(256, kernel_size= (3,3), padding='same',name='block3_conv4')(x)
x = MaxPooling2D(2 ,name ='block3_pool')(x)

x = Conv2D(512, kernel_size= (3,3), padding='same',name='block4_conv1')(x)
x = Conv2D(512, kernel_size= (3,3), padding='same',name='block4_conv2')(x)
x = Conv2D(512, kernel_size= (3,3), padding='same',name='block4_conv3')(x)
x = Conv2D(512, kernel_size= (3,3), padding='same',name='block4_conv4')(x)
x = MaxPooling2D(2 ,name ='block4_pool')(x)

x = Conv2D(512, kernel_size= (3,3), padding='same',name='block5_conv1')(x)
x = Conv2D(512, kernel_size= (3,3), padding='same',name='block5_conv2')(x)
x = Conv2D(512, kernel_size= (3,3), padding='same',name='block5_conv3')(x)
x = Conv2D(512, kernel_size= (3,3), padding='same',name='block5_conv4')(x)
x = MaxPooling2D(2 ,name ='block5_pool')(x)

x = Flatten()(x)
x= Dense(units = 4096, activation = 'relu',name='fc1')(x)
x= Dense(units = 4096, activation = 'relu',name='fc2')(x)
output = Dense(1000, activation='softmax' ,name='predictions')(x)
model = Model(image_input, output)
model.summary()

ResNet코드

ResNet50 tensorflow code

model = tf.keras.applications.ResNet50(
    include_top=True, weights='imagenet', input_tensor=None,
    input_shape=None, pooling=None, classes=1000
)
model.summary()

 

ResNet101 tensorflow code

model = tf.keras.applications.ResNet101(
    include_top=True, weights='imagenet', input_tensor=None,
    input_shape=None, pooling=None, classes=1000
)
model.summary()

ResNet152 tensorflow code

model = tf.keras.applications.ResNet152(
    include_top=True, weights='imagenet', input_tensor=None,
    input_shape=None, pooling=None, classes=1000
)
model.summary()

 

keras.io/api/applications/

 

Keras documentation: Keras Applications

Keras Applications Keras Applications are deep learning models that are made available alongside pre-trained weights. These models can be used for prediction, feature extraction, and fine-tuning. Weights are downloaded automatically when instantiating a mo

keras.io

resnet 50 tensorflow 

 

github.com/keras-team/keras-applications/blob/bc89834ed36935ab4a4994446e34ff81c0d8e1b7/keras_applications/resnet50.py#L37

def conv_block(input_tensor,
               kernel_size,
               filters,
               stage,
               block,
               strides=(2, 2)):
    bn_axis = 3
    filters1, filters2, filters3 = filters
    conv_name_base = 'conv'+str(stage)+'_block' + block 

    bn_name_base = 'conv' + str(stage) +'_block'+ block
    relu_name_base = 'conv' + str(stage) +'_block'+ block

    x = layers.Conv2D(filters1, (1, 1), strides=strides,
                      kernel_initializer='he_normal',
                      name=conv_name_base + '_1_conv')(input_tensor)
    x = layers.BatchNormalization(axis=bn_axis, name=bn_name_base + '_1_bn')(x)
    x = layers.Activation('relu',name = relu_name_base+'_1_relu')(x)

    x = layers.Conv2D(filters2, kernel_size, padding='same',
                      kernel_initializer='he_normal',
                      name=conv_name_base + '_2_conv')(x)
    x = layers.BatchNormalization(axis=bn_axis, name=bn_name_base + '_2_bn')(x)
    x = layers.Activation('relu',name = relu_name_base+'_2_relu')(x)

    x = layers.Conv2D(filters3, (1, 1),
                      kernel_initializer='he_normal',
                      name=conv_name_base + '_0_conv')(x)
    x = layers.BatchNormalization(axis=bn_axis, name=bn_name_base + '_0_bn')(x)

    shortcut = layers.Conv2D(filters3, (1, 1), strides=strides,
                             kernel_initializer='he_normal',
                             name=conv_name_base + '_3_conv')(input_tensor)
    shortcut = layers.BatchNormalization(
        axis=bn_axis, name=bn_name_base + '_3_bn')(shortcut)

    x = layers.add([x, shortcut] ,name = 'conv'+str(stage)+'_block'+block+'_add')
    x = layers.Activation('relu',name = 'conv'+str(stage)+'_block'+block+'_out')(x)
    return x
 

def identity_block(input_tensor, kernel_size, filters, stage, block):
    """The identity block is the block that has no conv layer at shortcut.
    # Arguments
        input_tensor: input tensor
        kernel_size: default 3, the kernel size of
            middle conv layer at main path
        filters: list of integers, the filters of 3 conv layer at main path
        stage: integer, current stage label, used for generating layer names
        block: 'a','b'..., current block label, used for generating layer names
    # Returns
        Output tensor for the block.
    """
    filters1, filters2, filters3 = filters
    bn_axis = 3
    conv_name_base = 'conv' + str(stage) +'_block' + '_'+block
    bn_name_base = 'conv' + str(stage) +'_block' + block
    relu_name_base = 'conv' + str(stage) +'_block'+ block

    x = layers.Conv2D(filters1, (1, 1),
                      kernel_initializer='he_normal',
                      name=conv_name_base + '_1_conv')(input_tensor)
    x = layers.BatchNormalization(axis=bn_axis, name=bn_name_base + '_1_bn')(x)
    x = layers.Activation('relu',name = relu_name_base+'_1_relu')(x)

    x = layers.Conv2D(filters2, kernel_size,
                      padding='same',
                      kernel_initializer='he_normal',
                      name=conv_name_base + '_2_conv')(x)
    x = layers.BatchNormalization(axis=bn_axis, name=bn_name_base + '_2_bn')(x)
    x = layers.Activation('relu',name = relu_name_base+'_2_relu')(x)

    x = layers.Conv2D(filters3, (1, 1),
                      kernel_initializer='he_normal',
                      name=conv_name_base + '_3_conv')(x)
    x = layers.BatchNormalization(axis=bn_axis, name=bn_name_base + '_3_bn')(x)

    x = layers.add([x, input_tensor],name = 'conv'+str(stage)+'_block'+block+'_add')
    x = layers.Activation('relu',name = 'conv'+str(stage)+'_block'+block+'_out')(x)
    return x

from tensorflow.keras.layers import Conv2D,Dense,Flatten,Input,MaxPooling2D,ZeroPadding2D,BatchNormalization,Activation
from tensorflow.keras import Model
from tensorflow.keras import layers

image_input = Input(shape=(224, 224, 3))
x = ZeroPadding2D(3,name='conv1_pad')(image_input)
x = Conv2D(64, kernel_size= (7,7), strides=(2, 2),padding='valid',name='conv1_conv')(x) 
x = BatchNormalization(axis=3, name='bn_conv1')(x) 
x = Activation('relu', name='conv1_relu')(x)    
x = ZeroPadding2D(padding=(1, 1),name='pool1_pad')(x)      
x = MaxPooling2D((3, 3), strides=(2, 2),name='pool1_pool')(x) 
               
x = conv_block(x, 3, [64, 64, 256], stage=2, block='1', strides=(1, 1))
x = identity_block(x, 3, [64, 64, 256], stage=2, block='2')
x = identity_block(x, 3, [64, 64, 256], stage=2, block='3')

x = conv_block(x, 3, [128, 128, 512], stage=3, block='1')
x = identity_block(x, 3, [128, 128, 512], stage=3, block='2')
x = identity_block(x, 3, [128, 128, 512], stage=3, block='3')
x = identity_block(x, 3, [128, 128, 512], stage=3, block='4')

x = conv_block(x, 3, [256, 256, 1024], stage=4, block='1')
x = identity_block(x, 3, [256, 256, 1024], stage=4, block='2')
x = identity_block(x, 3, [256, 256, 1024], stage=4, block='3')
x = identity_block(x, 3, [256, 256, 1024], stage=4, block='4')
x = identity_block(x, 3, [256, 256, 1024], stage=4, block='5')
x = identity_block(x, 3, [256, 256, 1024], stage=4, block='6')

x = conv_block(x, 3, [512, 512, 2048], stage=5, block='1')
x = identity_block(x, 3, [512, 512, 2048], stage=5, block='2')
x = identity_block(x, 3, [512, 512, 2048], stage=5, block='3')

x = layers.GlobalAveragePooling2D(name='avg_pool')(x)

#https://github.com/keras-team/keras-applications/blob/master/keras_applications/resnet50.py

x = Flatten()(x)
x= Dense(units = 4096, activation = 'relu',name='fc1')(x)
x= Dense(units = 4096, activation = 'relu',name='fc2')(x)
output = Dense(1000, activation='softmax' ,name='predictions')(x)
model = Model(image_input, output)
print(model.summary())
반응형

'Deep learning > 소스' 카테고리의 다른 글

yolov5 coco data set training  (0) 2021.09.17
classification mnist-LeNet-5  (0) 2021.04.03
yolov5 모델pt  (0) 2021.03.26
python 한국 시간으로 설정  (0) 2020.11.17
20201110-yolov5로 데이터 학습  (2) 2020.11.04
반응형

 

 

assertion failed: [0] [Op:Assert] name: EagerVariableNameReuse

 

 

 

인터넷 상에서 여러가지 해결책으로 나오고 있는데

tensorflow 버전을 확인 하면서 downgrade하지 않으면 upgrade등 여러가지 방법이 나온다.

 

tensorflow버전과 상관 없이 해결 방법이 있다.

오류 해결 방법:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = ""

 

 

import os
os.environ["CUDA_VISIBLE_DEVICES"] = ""

이 코드를 실행하고도 같은 경우가 났을 경우에는 kernel restart하고 다시 실행 하면 된다.

gpu를 사용하지 않으면 오류를 해결할 수 있다.

반응형
반응형

 

 

오류 : No module named 'png'

 

 

해결 방법: pip install pypng

반응형
반응형

jupyter notebook 에서 pytorch mnist 다운로드시 

IProgress not found. Please update jupyter and ipywidgets

오류가 난다.

 

 

 

 

해결방법:

 

pip install ipywidgets

 

ipywidgets.readthedocs.io/en/stable/user_install.html

 

Installation — Jupyter Widgets 7.5.1 documentation

With pip pip install ipywidgets jupyter nbextension enable --py widgetsnbextension When using virtualenv and working in an activated virtual environment, the --sys-prefix option may be required to enable the extension and keep the environment isolated (i.e

ipywidgets.readthedocs.io

 

반응형
반응형

 

아나콘다에서 yolov5를 환경설정하기

 

conda create -n yolov5 python=3.8

conda activate yolov5

 

yolov5를 다운로드 한다.

git clone https://github.com/ultralytics/yolov5.git

 

 

pip install 필요한 lib 다운로드

pip install matplotlib tqdm opencv-python pillow PyYAML scipy tensorboard

 

pytorch1.6 환경설정하기

torch버전과 torchvision에 맞는 것을 설치해야 한다.

아니면 RuntimeError: No such operator torchvision::nms 같은 오류가 난다.

 

 

pytorch.org/get-started/previous-versions/

 

PyTorch

An open source deep learning platform that provides a seamless path from research prototyping to production deployment.

pytorch.org

 

경로에서 설치해야 한다.

 

먼저 cuda버전을 확인한다.

windows 10 cuda version

cmd 창에서 

nvcc --version 

 

설치

# CUDA 10.1

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.1 -c pytorch

최신 버전은 pytorch 1.7 이상이여야 가능하다.

pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

 

kernel 생성

conda install ipykernel

python -m ipykernel install --user --name yolov5 --display-name yolov5Kenrel

 

 

jupyter notebook 하여 생겼는지 확인한다.

 

 

 

www.cryptocoin.kr/entry/CUDA-%EB%B2%84%EC%A0%84-%ED%99%95%EC%9D%B8-%ED%95%98%EA%B8%B0-nvidia-cuda-version-check-nvcc-version

 

CUDA 버전 확인 하기 : nvidia cuda version check : nvcc --version

최근에 인공지능과 관련된 기술, 빅데이터, 머신러닝 등의 기술의 발전으로 GPU와 메모리의 수요가 급증하고 있습니다. 덕분에 관련 기업들의 실적이 날로 계속 증가하고 있습니다. 특히, GPU 관

www.cryptocoin.kr

 

반응형

'Deep learning > 환경설정' 카테고리의 다른 글

visual studio code 연동 git  (0) 2020.11.02
anaconda kernel생성  (0) 2020.10.28
yolo3 labelImage사용법  (0) 2020.09.26
pytorch 가상환경(anaconda)으로 설치  (0) 2020.08.18

+ Recent posts