묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
[글머리 기호 추출] GetheadingString()
문단 글머리 기호를 추출하고자 합니다.원래 목적은 문단별 글머리 기호가 다르고 문단별로 각각 다른 폰트를 적용이 목적입니다. GetHeadingString()을 써보니 코드를 적용해서 커서를 옮겨도 문서를 최초 불러온 커서의 위치의 글머리 기호를 불러오네요..이유를 몰겟습니다. ㅠㅠ아래는 테스트 코드입니다.import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") hwp.Open("D:\Automation\Test.hwpx") text = hwp.GetHeadingString() hwp.InitScan() hwp.HAction.Run("MoveDocBegin") hwp.HAction.Run("MoveParaBegin") print(text) hwp.HAction.Run("MoveSelParaEnd") hwp.HAction.Run("CharShapeItalic") hwp.HAction.Run("Cancel") hwp.MovePos(10) print(text) hwp.HAction.Run("MoveSelNextParaBegin") hwp.HAction.Run("MoveSelParaEnd") hwp.HAction.Run("CharShapeItalic") hwp.HAction.Run("Cancel") hwp.ReleaseScan()
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
안녕하세요 선생님 질문입니다!
선생님 안녕하세요 알고리즘을 공부하고 다시 들으니 이해가 더 잘 되는 것 같습니다. 이제 막 분류에 대한 마지막까지 들었는데 제가 이해한 부분이 맞는지 모르겠습니다. 결정트리는 머신러닝의 한 방법이다.정확도를 높이기 위해서 앙상블 기법(여러가지 머신러닝을 섞거나, 데이터를 부트스트래핑 등)을 쓴다.대표적인 앙상블 기법으로는 배깅과 보팅, 부스팅이 있는데, 배깅에서는 여러가지 결정트리로 되어있는 랜덤포레스트 방식, 보팅은 서로 다른 머신러닝들로 학습하는 것, 부스팅은 약한 분류기를 순차적으로 학습하면서 전에 학습했던 특정데이터에 가중치를 두어 점차적으로 학습하는 방식스태킹은 분류된 데이터를 가지고 다시 한번 하나의 머신러닝 기법으로 학습한다. (하지만 학습에 테스트데이터를 쓰기때문에 오버피팅이 발생)이 정도로 머릿속으로 정리를 했는데 틀린 것이 있는지, 또는 보팅을 할때 다른 머신러닝 여러개와 결정트리 여러개 로 구성된 앙상블 모델도 랜덤포레스트라고 부를 수 있는지가 궁금합니다
-
미해결리눅스 입문 - 개념으로 탄탄히!!
virtual box 로 ubuntu 다운로드 하는데 이상이 있습니다..
선생님처럼 단지 첫 줄 내용만 있는 것이 아닌bootable medium and reboot하라는데 무슨 의미인지 모르겠습니다. 무시하고 저장소에 ubuntu 이미지를 넣으면 이러한 결과가 생깁니다.어떻게 해결해야하나요,,??ㅠㅠㅠ ubuntu 22.04를 다운로드하였습니다.
-
미해결코딩테스트 [ ALL IN ONE ]
트리 문제 질문입니다!
def LCA(root, p, q): if root == None: return None left = LCA(root.left, p, q) right = LCA(root.right, p, q) if root == p or root == 1: return root elif left and right: return root return left or righthttps://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/이 문제 질문드립니다.맨 밑에 코드가 이해가 안가서 질문드려요root가 q 이거나 p 이면 root를 반환하는 것 까지 이해했습니다. elif left and right: return root return left or right저 부분이 잘 이해가 안됩니다elif left and right 의 의미가 left 랑 right 둘다 존재하면 root를 반환하라는 의미인가요?그게 아니면 left 아니면 right 중 둘 중 하나 존재하는 것을 리턴하라는 의미구요 저는 자바로 하고있는데 저부분이 이해가 안가서 질문드립니다..!
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 섹션8-16 수들의 조합 질문드립니다
function solution(k, nums, m) { const isMulti = (n, m) => { if (!(n % m)) return 1; return 0; }; let ans = 0; function DFS(L, sp, sum) { if (L === k) { console.log(L, tmp, sp, sum); if (isMulti(sum, m)) ans++; } else { for (let i = sp; i < nums.length; i++) { DFS(L + 1, i + 1, sum + nums[i]); } } } DFS(0, 0, 0); return ans; }해당 문제 시간복잡도가 궁금하여 질문드립니다.해당 문제를 선생님과 똑같이 풀이했는데요, DFS 내부 for문의 i시작점이 동적으로 변하다보니 시간복잡도를 어떻게 잡아야 할지 몰라 헷갈려 질문드려요.만일 for문의 i의 시작점이 고정적으로 0이라면 O(N^K)가 될 것 같은데,이처럼 i가 유동적으로 변하는 것으로 기존 빅오 표기에 영향이 갈만큼 차이가 발생하게 되나요?시간내어 확인해주셔서 감사합니다.
-
해결됨파이썬/장고로 웹채팅 서비스 만들기 (Feat. Channels) - 기본편
run_test_hello_channel.py 실행 no module named 'channel_redis' 오류 발생
m1 mac에서 강의를 듣고있습니다.env에서 channel_layer_redis 값을 파싱하는 것까지는 잘 따라왔는데run_test_hello_channel.py 에서 해당 오류가 발생하네요강사님 github에 있는 코드 그대로 복사해서 붙였는데도 오류가 나서 어디서부터 해결해야 할 지 모르겠습니다!도와주세요 ㅜㅜimport asyncioimport osimport djangofrom channels.layers import get_channel_layeros.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"django.setup()async def main(): channel_layer = get_channel_layer() message_dict = {'content': 'world'} await channel_layer.send('hello', message_dict) response_dict = await channel_layer.receive('hello') is_equal = message_dict == response_dict print("송신/수신 데이터가 같습니까?", is_equal)asyncio.run(main()) 터미널 결과는 다음과 같습니다. (webchat) tk_mac@itaegyeong-ui-MacBookAir webchat % python run_test_hello_channel.pyTraceback (most recent call last): File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 65, in makebackend backend_class = import_string(self.configs[name]["BACKEND"]) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/django/utils/module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/django/utils/module_loading.py", line 15, in cached_import module = import_module(module_path) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/importlib/__init__.py", line 126, in import_module return bootstrap.gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in gcdimport File "<frozen importlib._bootstrap>", line 1027, in findand_load File "<frozen importlib._bootstrap>", line 992, in findand_load_unlocked File "<frozen importlib._bootstrap>", line 241, in callwith_frames_removed File "<frozen importlib._bootstrap>", line 1050, in gcdimport File "<frozen importlib._bootstrap>", line 1027, in findand_load File "<frozen importlib._bootstrap>", line 1004, in findand_load_unlockedModuleNotFoundError: No module named 'channel_redis' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/tk_mac/github/webchat/run_test_hello_channel.py", line 22, in <module> asyncio.run(main()) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/asyncio/runners.py", line 44, in run return loop.run_until_complete(main) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete return future.result() File "/Users/tk_mac/github/webchat/run_test_hello_channel.py", line 12, in main channel_layer = get_channel_layer() File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 357, in get_channel_layer return channel_layers[alias] File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 78, in getitem self.backends[key] = self.make_backend(key) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 44, in make_backend return self._make_backend(name, config) File "/Users/tk_mac/opt/anaconda3/envs/webchat/lib/python3.10/site-packages/channels/layers.py", line 69, in makebackend raise InvalidChannelLayerError(channels.exceptions.InvalidChannelLayerError: Cannot import BACKEND 'channel_redis.core.RedisChannelLayer' specified for default
-
미해결Vue.js 중급 강좌 - 웹앱 제작으로 배워보는 Vue.js, ES6, Vuex
github 권한요청 드립니다.
인프런 아이디 : shwan16.oh@samsung.com인프런 이메일 : shwan16.oh@samsung.com깃헙 아이디 : oswswo123깃헙 Username : SeungHwan Oh
-
미해결홍정모의 따라하며 배우는 C언어
main.o 파일을 생성하고 또 실행파일을 만드는 이유가 궁금합니다
main.c파일을 컴파일 해서 main.exe 파일이 만들어졌는데 이후에 main.o파일을 만들고 나서 왜 main.o에 대한 실행파일을 만드는 건지 궁금합니다gcc -c main.c는 컴파일만 하고 실행파일은 생성이 안 되니까 실행파일을 더 만드는 것까진 알겠는데 왜 obj파일을 또 컴파일 해서 obj파일로 실행파일을 만드는지가 궁금합니다main.c를 컴파일 => main.exemain.c의 obj 파일 생성 => main.omain.o를 컴파일 => exe_from_obj.exe이 중에 1,2번만 해도 obj파일과 exe파일이 생성된 것이니 더 생성해야될 파일이 없는 것이 아닌가요...?
-
미해결타입스크립트 입문 - 기초부터 실전까지
ts2345
제가 강의를 따라하면서 코드를 아래처럼 작성했습니다interface PhoneNumberDictionary { [home: string]: { num: number; }; } interface Contact { name: string; address: string; phones: PhoneNumberDictionary; } // api // TODO: 아래 함수의 반환 타입을 지정해보세요. function fetchContacts(): Promise<Contact[]> { // TODO: 아래 변수의 타입을 지정해보세요. const contacts = [ { name: "Tony", address: "Malibu", phones: { home: { num: 11122223333, }, office: { num: 44455556666, }, }, }, { name: "Banner", address: "New York", phones: { home: { num: 77788889999, }, }, }, { name: "마동석", address: "서울시 강남구", phones: { home: { num: 213423452, }, studio: { num: 314882045, }, }, }, ]; return new Promise((resolve) => { setTimeout(() => resolve(contacts), 2000); }); } setTimeout(() => resolve(contacts), 2000); 여기서 contacts에서 에러가 나는데 Argument of type '({ name: string; address: string; phones: { home: { num: number; }; office: { num: number; }; studio?: undefined; }; } | { name: string; address: string; phones: { home: { num: number; }; office?: undefined; studio?: undefined; }; } | { ...; })[]' is not assignable to parameter of type 'Contact[] | PromiseLike<Contact[]>'. Type '({ name: string; address: string; phones: { home: { num: number; }; office: { num: number; }; studio?: undefined; }; } | { name: string; address: string; phones: { home: { num: number; }; office?: undefined; studio?: undefined; }; } | { ...; })[]' is not assignable to type 'Contact[]'. Type '{ name: string; address: string; phones: { home: { num: number; }; office: { num: number; }; studio?: undefined; }; } | { name: string; address: string; phones: { home: { num: number; }; office?: undefined; studio?: undefined; }; } | { ...; }' is not assignable to type 'Contact'. Type '{ name: string; address: string; phones: { home: { num: number; }; office: { num: number; }; studio?: undefined; }; }' is not assignable to type 'Contact'. Types of property 'phones' are incompatible. Type '{ home: { num: number; }; office: { num: number; }; studio?: undefined; }' is not assignable to type 'PhoneNumberDictionary'. Property 'studio' is incompatible with index signature. Type 'undefined' is not assignable to type '{ num: number; }'.ts(2345)라고 뜹니다 제가 잘못 따라한게 있을가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@GetMappintg("/login") loginForm()의 파라미터로 @ModelAttribute LoginForm을 넣어주는 이유가 loginForm.html에 null값을 넣어주기 위해서인게 맞나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 로그인 기능 강의를 듣던 중 의문점이 생겨 질문 드립니다.제가 이해하기로는 1.사용자가 GET /login 요청시 "login/loginForm" 뷰 응답 -> loginForm() 메서드 호출 2.사용자가 login/loginFom.html 에서 loginId, password 입력 후 POST /login 요청 -> login() 메서드 호출 이런 순서로 이루어지는 것 같은데 위의 순서 중 1번에서 loginForm()의 파라미터인 @ModleAttribute LoginForm에 들어가는 값은 사용자가 GET /login 호출시 쿼리 파리미터로 넣어준 값이 없으니까 null이 되는 것을 확인했습니다. 이 때 이 ModelAttribute를 받은 이유가 뷰를 렌더링 할 때 null값을 넣어주기 위한 용도로 받았다고 생각하면 되는 것 맞나요??
-
미해결실전! 스프링 데이터 JPA
application.yml에서 format_sql 적용이 안됩니다.
안녕하세요! 강의 수강 중 궁금한 부분이 있어 질문 남깁니다.테스트 코드 실행 시 콘솔 창의 쿼리가 여러 줄로 format된 형태가 아닌 한 줄로 나옵니다.application.yml 에서 hibernate.format_sql: true를 추가했는데도 적용이 안 되는데 이유를 잘 모르겠습니다.
-
해결됨시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script
vagrant private key timeout 문제입니다.
커뮤니티 질문글에 동일한 에러인https://www.inflearn.com/questions/544792/cent2-3-timeout-%EB%B0%9C%EC%83%9D이걸 보고 troubleshooting 해봤는데 계속 같은 에러가 발생하네요 환경windows 11virtualbox 7.0vagrant 2.3.4 시도한 방법은cmos 에서 가상환경은 enable 윈도우 기능에서 가상 기능 체크해제 dism.exe /online /Enable-Feature /FeatureName:VirtualMachinePlatform /all /NoRestart 실행 virtualbox cable connection vagrantfile에 추가 및 cpu memory 증설 v.customize ['modifyvm', :id, '--cableconnected1', 'on'] v.customize ["modifyvm", :id, "--uart1", "0x3F8", "4"] v.customize ["modifyvm", :id, "--uartmode1", "file", File::NULL] 윈도우 내부 로컬 환경 방화벽 vagrant로 올려보고 싶은데 왜 안되는지 궁금하네요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
터미널에 test.mv.db가 home 없어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]터미널에 test.mv.db가 home 없어요 그래서 찾아보니 document 에있는데 test.mv.db 파일을 home 으로 옮겨야한나요?
-
미해결
저작권관련
인터넷에 있는 코드를 그대로 사용한 경우 저작권 침해 문제 걱정이되어서요
-
미해결남박사의 파이썬으로 실전 웹사이트 만들기
search = request.args.get('search', -1, type=int)
search = request.args.get('search', -1, type=int)에서 -1의 의미를 정확히 모르겠네요. 다시 한번 예를 들어 설명해 주셨으면 감사하겠습니다.
-
미해결Three.js로 시작하는 3D 인터랙티브 웹
threejs의 최적화를 하려면 어떻게 해야할까요?
각기 다른 geometry를 가진 mesh를 매 분마다 많은 양을 생성할때 웹 브라우저에 out of memory가 발생하는 이슈가 발생하고 있습니다. 이러한 경우에 효과적으로 최적화를 하려면 어떻게 해야할까요? 또한 스택오버플로 나 다른곳을 보면 geometry가 아닌 buffergeometry를 사용하는데 둘의 차이가 무엇인가요?
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
버퍼와 스트림 강의 질문
강의내용이 영상이 아닌, 파일로 되어 있는 것 같은데,다운로드 링크가 보이지 않는 것 같습니다.어디서 다운로드 할 수 있을까요? 아니면 혹시 이전 영상이 3-12 이고 이 강의 다음영상이 3-14로 되어 있던데, 영상이 빠진 거 일까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
N:M tag 부분 구현 중 findOne 조회 부분 에러
products.service.ts에서 create 부근에 tag를 저장 하기 전 tag를 미리 조회하는 부분을 구현 중인데 findOne에서 {name: tagname} 을 구현하려고 할 때 다음과 같은 에러가 발생합니다. save에서는 에러가 발생하지 않는데 findOne 조회 부분만 에러가 발생하네요관련된 코드 같이 보내드립니다.createProduct.input.tsimport { InputType, Field, Int } from '@nestjs/graphql'; import { Min } from 'class-validator'; import { ProductSaleslocationInput } from 'src/apis/productsSaleslocation/entities/dto/productSaleslocation.input'; @InputType() export class CreateProductInput { @Field(() => String) name: string; @Field(() => String) description: string; @Min(0) @Field(() => Int) price: number; @Field(() => ProductSaleslocationInput) productSaleslocation: ProductSaleslocationInput; @Field(() => String) productCategotyId: string; @Field(() => [String]) productTags: string[]; } products.entity.tsimport { Field, Int, ObjectType } from '@nestjs/graphql'; import { ProductCategory } from 'src/apis/productsCategory/entities/productsCategory.entity'; import { ProductTag } from 'src/apis/productsTags/productTags.entity'; import { User } from 'src/apis/users/users.entity'; import { Column, DeleteDateColumn, Entity, JoinColumn, JoinTable, ManyToMany, ManyToOne, OneToOne, PrimaryGeneratedColumn, } from 'typeorm'; import { ProductSaleslocation } from '../../productsSaleslocation/entities/productsSaleslocation.entity'; @Entity() @ObjectType() export class Product { @PrimaryGeneratedColumn('uuid') @Field(() => String) id: string; @Field(() => String) @Column() name: string; @Field(() => String) @Column() description: string; @Field(() => Int) @Column() price: number; @Field(() => Boolean) @Column({ default: false }) isSoldout: boolean; @DeleteDateColumn() deletedAt: Date; @Field(() => ProductSaleslocation) @JoinColumn() @OneToOne(() => ProductSaleslocation) productSaleslocation: ProductSaleslocation; @Field(() => ProductCategory) @ManyToOne(() => ProductCategory) productCategory: ProductCategory; @Field(() => User) @ManyToOne(() => User) user: User; @JoinTable() @ManyToMany(() => ProductTag, (productTags) => productTags.products) @Field(() => [ProductTag]) productTags: ProductTag[]; } productTags.entity.tsimport { Field, ObjectType } from '@nestjs/graphql'; import { Column, Entity, ManyToMany, PrimaryGeneratedColumn } from 'typeorm'; import { Product } from '../products/entities/products.entity'; @Entity() @ObjectType() export class ProductTag { @Field(() => String) @PrimaryGeneratedColumn('uuid') id: string; @Column() @Field(() => String) name: string; @Field(() => [Product]) @ManyToMany(() => Product, (products) => products.productTags) products: Product[]; } products.service.tsimport { Product } from './entities/products.entity'; import { Injectable, UnprocessableEntityException } from '@nestjs/common'; import { Repository } from 'typeorm'; import { InjectRepository } from '@nestjs/typeorm'; import { ProductSaleslocation } from '../productsSaleslocation/entities/productsSaleslocation.entity'; import { ProductTag } from '../productsTags/productTags.entity'; @Injectable() export class ProductService { constructor( @InjectRepository(Product) private readonly productRepository: Repository<Product>, @InjectRepository(ProductSaleslocation) private readonly productSaleslocationRepository: Repository<ProductSaleslocation>, @InjectRepository(ProductTag) private readonly productTagRepository: Repository<ProductTag>, ) {} async findAll() { return await this.productRepository.find({ relations: ['productSaleslocation', 'productCategory', 'productTags'], }); } async findOne({ productId }) { return await this.productRepository.findOne({ where: { id: productId }, relations: ['productSaleslocation', 'productCategory', 'productTags'], }); } async create({ createProductInput }) { // 1. 상품만 등록하는 경우 // const result = await this.productRepository.save({ // ...createProductInput, // // 하나 하나 직접 나열하는 방식 // // name: createProductInput.name, // // description: createProductInput.description, // // price: createProductInput.price, // }); // 2. 상품과 상품거래 위치 같이 등록 const { productSaleslocation, productCategotyId, productTag, ...product } = createProductInput; const result = await this.productSaleslocationRepository.save({ ...productSaleslocation, }); // productTag // ["#electronics, #computer"] const result2 = []; // [{name: ..., id: ...}] for (let i = 0; i < productTags.length; i++) { const tagName = productTags[i].replace('#', ''); // check the tags that has already registered const checkTag = await this.productTagRepository.findOne({ name: tagName, }); // if the tags has been existed if (checkTag) { result2.push(checkTag); // if the tags hasn't been existed } else { const newTag = await this.productTagRepository.save({ name: tagName }); result2.push(newTag); } } const result3 = await this.productRepository.save({ ...product, productSaleslocation: result, // result 통째로 넣기 vs id만 넣기 productCategory: { id: productCategotyId }, productTags: result2, }); return result3; } async update({ productId, updateProductInput }) { const myProduct = await this.productRepository.findOne({ where: { id: productId }, }); const newProduct = { ...myProduct, id: productId, ...updateProductInput, }; return await this.productRepository.save(newProduct); } async checkSoldOut({ productId }) { const product = await this.productRepository.findOne({ where: { id: productId }, }); if (product.isSoldout) { throw new UnprocessableEntityException('Sold out'); } // if(product.isSoldout) { // throw new HttpException('이미 판매 완료 된 상품입니다.', HttpStatus.UNPROCESSABLE_ENTITY) // } } async delete({ productId }) { // 1. 실제 삭제 // const result = await this.productRepository.delete({ id: productId }); // return result.affected ? true : false // 2. 소프트 삭제(직접 구현) - isDeleted // this.productRepository.update({ id: productId }, { isDeleted: true }); // 3. 소프트 삭제(직접 구현) - deletedAt // this.productRepository.update({ id: productId }, { deletedAt: new Date() }); // 4. 소프트 삭제(TypeORM 제공) - softRemove - id로만 삭제 가능 // this.productRepository.softRemove({ id: productId }); // 4 . 소프트 삭제(TypeORM 제공) - softDelete const result = await this.productRepository.softDelete({ id: productId }); return result.affected ? true : false; } } 내용 확인 부탁드립니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
AWS EC2 우분투 서버
안녕하세요?AWS EC2 우분투 서버를 사용하고 있습니다.Docker를 사용하면 AWS service(aws codeBuild , aws codeDeploy)를 사용하지 않고 CI/CD가 가능한가요? 코드는 react/next 입니다. 감사합니다.
-
미해결[파이토치] 실전 인공지능으로 이어지는 딥러닝 - 기초부터 논문 구현까지
register_forward_hook을 활용한 피쳐맵 추출에서 문제가 발생합니다ㅠㅠ
안녕하세요. 현재 코랩환경에서 파이토치 제공 Mask-RCNN을 활용하고 있습니다. 강의에서 알려주신 Hook를 활용하여 중간 레이어의 피쳐맵을 추출하고자 진행하던 과정에서 문제가 발생하여 질문드립니다ㅠㅠ모델은 제가 가진 데이터셋에 맞춰 출력층을 바꾸어준 후에 학습을 완료한 상태입니다. 이후 for문을 통해 모델에 여러 입력 이미지들을 넣어주어 이미지별 중간 레이어의 피쳐맵을 얻으려고 하였으나, 출력결과 하나의 이미지에 대한 피쳐맵만 반복적으로 출력되는 문제가 발생합니다...모델 학습 및 가중치 로드 후 코드는 다음과 같습니다.Hook 함수def get_activation(name): def hook(models, input, output): activation[name] = output return hook입력 이미지별 피쳐맵 저장activation = {} device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") models.to(device) for i in range(1, 5): test_img = Image.open("입력 이미지 루프").convert('RGB') test_img = test_img.resize((800, 800)) test_img = tr.functional.to_tensor(test_img) test_img = test_img.reshape(1, 3, 800, 800) with torch.no_grad(): models.eval() models.backbone.fpn.extra_blocks.register_forward_hook(get_activation("fm{}".format(i))) test_img = test_img.to(device) models(test_img)출력 결과activation["fm1"] 부터 ["fm4"] 까지 동일한 값이 들어가 있음아무리 찾아보고 여러 시도를 해보아도 해결이 되지않아 답답하네요ㅠㅠ추가로 위의 코드를 한번 돌리면 런타임을 다시 시작하지 않는 이상 이후에 코드를 수정하여 hook 함수부터 다시 돌려도 적용이 되지 않는 문제도 발생합니다...