python是否可以一次只运行程序中的一部分代码

C语言中可以用宏编译的方式实现对代码运行的控制,可以很方便地控制每次只执行某一段代码。python中是否也有这样的办法呢?即是否可以通过一个参量的变化来决定每次运行哪一段程序?(除if-else语句之外)

2个回答

可以

# -*- coding: UTF-8 -*-
import sys

def func1():
    print("1")

def func2():
    print("2")

eval(sys.argv[1] + "()")

这个程序,保存为 test.py

$ python test.py func1
则输出1
$ python test.py func2
则输出2

你是指不运行某个代码段还是不编译某个代码段?
后一种在python里没区别,python是解释型语言,运行到哪编译到哪,只要流程走不到就等价于未编译。
前一种的话把你要运行的不运行的放在不同函数里,再在主函数里选择不就行了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python3多进程爬虫的每个进程停止运行但是程序没有退出?
我写了一个多进程和多线程结合的爬虫(我不知道多进程和多线程怎样结合使用)所以我先说一下**我的思路**: * 首先我爬取的是[某车之家](https://www.autohome.com.cn/)的文章 * 汽车之家有很多种车,比如奥迪,宝马,奔驰,我创建一个进程池pool, 对应每一种车创建一个进程下载它的文章 * 然后,因为每种车下面有很多篇文章,我创建一个线程池,对应每一篇文章,创建一个线程来下载文章 * 创建进程池我使用的是multiprocessing.Pool * 创建线程池使用的是concurrent.futures.ThreadPoolExecutor ## 那么现在问题来了 * 当我刚开始运行我的代码的时候,因为我创建的进程池大小是cpu_count()=8,所以打开任务管理器可以看到8个python进程正在运行 ![图片说明](https://img-ask.csdn.net/upload/201901/26/1548506446_775132.png) * **然后,当代码运行一段时间后,进程池中的8个进程全部停止运行了** ![图片说明](https://img-ask.csdn.net/upload/201901/26/1548506504_930707.png) ![图片说明](https://img-ask.csdn.net/upload/201901/26/1548506544_201575.png) ## 可以看到此时代码并没有运行完毕,而且代码运行卡在这里无论等多久都不会继续运行 * 我观察发现,这些进程在下载某辆车如本田-雅阁的所有文章后,注意是将所有文章下载完毕才会停止运行,而且不再运行 ## 我想知道进程池中的进程为什么会停止运行,而我的函数没有停止?可以确定的是我的爬虫任务并没有全部完成,仅仅完成了一小部分。进程池中的每一个进程在爬取几辆车的所有文章后停止运行,求大佬解答,不甚感激。 ## 代码如下 ``` # coding=utf-8 import requests import os import re import json import time import random import threading import multiprocessing import concurrent.futures from bs4 import BeautifulSoup def change_title(title): rstr = r"[\/\\\:\*\?\"\<\>\|]" return re.sub(rstr, "", title) USER_AGENTS = [ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)", "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)", "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)", "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)", "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0", "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20", "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52", ] http_ip = list() https_ip = list() with open(r'D:\pycharm\Spider\99mm\useful_ip.txt', 'r') as fp: lines = fp.readlines() for line in lines: ips = eval(line) if str(ips['kind']) == 'HTTP': http_ip.append(ips['proxy']) else: https_ip.append(ips['proxy']) def get_all_cars(main_url, file_path): car_dict = {} html = requests.get(main_url) soup = BeautifulSoup(html.text, "html.parser") catalog = soup.find("div", id="hotcar-1").find_all("div", class_="name") for cata in catalog[-1:]: # suv, 紧凑型车, 中型车 cata_a = cata.find("a") print(cata_a["href"]) print(cata_a.get_text()) car_url = main_url + cata_a["href"] car_html = requests.get(car_url) car_soup = BeautifulSoup(car_html.text, "html.parser") # 有4个 class_="tab-content-item" car_letter_boxes = car_soup.find("div", class_="tab-content-item").find_all("div", class_="uibox") for car_letter_box in car_letter_boxes[:]: # 车牌按字母排序 A~Z, 一个字母下有很多车牌, 对每个字母进行处理 car_brand_info = car_letter_box.find("div", class_="uibox-con rank-list rank-list-pic") if car_brand_info: car_brands = car_brand_info.find_all("dl", olr=re.compile("^.*$")) for car_brand in car_brands: # 一个车牌有很多种车型, 对每个车牌进行处理 brand_name = car_brand.find("div").find("a").get_text() print("-car brand-", brand_name) car_dict[cata_a.get_text() + "-" + brand_name] = {} car_brand_path = main_path + "\\" + cata_a.get_text() + "-" + brand_name if not os.path.exists(car_brand_path): os.mkdir(car_brand_path) # os.chdir(car_brand_path) car_name_lists = car_brand.find_all("ul", class_="rank-list-ul") for car_name_list in car_name_lists: car_name_lis = car_name_list.find_all("li", id=re.compile("^.*$")) for car_name_li in car_name_lis: car_a_tag = car_name_li.find("h4").find("a") specific_car_url = "https:" + car_a_tag["href"] car_name = car_a_tag.get_text() print("\t", car_name, "\t", specific_car_url) car_dict[cata_a.get_text() + "-" + brand_name][car_name] = specific_car_url brand_cars_path = car_brand_path + "\\" + car_name if not os.path.exists(brand_cars_path): os.mkdir(brand_cars_path) # os.chdir(brand_cars_path) # 至此, 找到了每一辆车的url, 需要从这个url中找到它对应的一系列文章 # get_each_car_articles(main_url, specific_car_url) else: continue return car_dict def get_each_car_articles(main_url, specific_car_url, file_path, headers, proxies, info): # main_url, specific_car_url, file_path, headers, proxies, info = args # 传入的是每一种车的url, 即specific_car_url article_dict = {} specific_car_html = requests.get(url=specific_car_url, headers=headers, proxies=proxies) specific_car_soup = BeautifulSoup(specific_car_html.text, "html.parser") art_temp = specific_car_soup.find("div", class_="athm-sub-nav__channel athm-js-sticky") if art_temp: art = art_temp.find_all("li") else: print(f"\t\t****article is None, url is {specific_car_url}****") return part_url = art[6].find("a")["href"] specific_car_article_url = main_url + part_url right_pos = specific_car_article_url.rfind("/") specific_car_article_url = specific_car_article_url[:right_pos + 1] specific_car_article_html = requests.get(specific_car_article_url, headers=headers, proxies=proxies) specific_car_article_soup = BeautifulSoup(specific_car_article_html.text, "html.parser") page_info = specific_car_article_soup.find("div", class_="page") page_num = 1 if page_info: pages = page_info.find_all("a", target="_self") page_num = int(pages[-2].get_text()) for i in range(1, page_num + 1): if i == 1: page_url = specific_car_article_url else: page_url = specific_car_article_url[:-4] + str(i) + specific_car_article_url[-3:] # print("\t"*2, f"正在查找第{i}页的文章\t", page_url) page_html = requests.get(page_url, headers=headers, proxies=proxies) page_soup = BeautifulSoup(page_html.text, "html.parser") articles = page_soup.find("div", class_="cont-info").find_all("li") for article in articles: each_article = article.find("h3").find("a") each_article_url = "https:" + each_article["href"] each_article_title = each_article.get_text() article_dict[each_article_title] = each_article_url os.chdir(file_path) with concurrent.futures.ThreadPoolExecutor(max_workers=8) as t_executor: for key, value in article_dict.items(): t_executor.submit(download_each_article, *(value, key,info)) # thread_list = [] # for key, value in article_dict.items(): # thread_list.append(threading.Thread(target=download_each_article, args=(value, key,info))) # [thread.start() for thread in thread_list] # [thread.join() for thread in thread_list] def download_each_article(each_article_url, each_article_title, info): headers = { "User-Agent": random.choice(USER_AGENTS), "Referer": "https://www.autohome.com.cn" } proxies = {"proxy": random.choice(http_ip)} # each_article_url, each_article_title, headers, proxies, info = args print(f"\t\t--下载文章-- {info}\t{each_article_title}\t{each_article_url}") article_html = requests.get(each_article_url, headers=headers, proxies=proxies) article_soup = BeautifulSoup(article_html.text, "html.parser") article_content = article_soup.find("div", class_="container article") if article_content: with open(f"{change_title(each_article_title)}.txt", "w+", encoding="utf-8") as f: time_span = article_content.find("div", class_="article-info").find("span", class_="time") time = time_span.get_text() time_dict = {"time": time} f.write(json.dumps(time_dict) + "\n\n") article_content_div = article_content.find("div", id="articleContent") for content in article_content_div.find_all("p"): if content.get_text().strip(): content_dict = {"content": content.get_text()} f.write(json.dumps(content_dict) + "\n") else: try: imgs = content.find_all("a") for i in imgs: img = i.find("img") img_dict = {f"<[image] {img['alt']}> ": "https:" + img["src"]} f.write(json.dumps(img_dict) + "\n") except: continue pages = article_content.find("div", class_="athm-page__num") if pages: for a in pages.find_all("a", target="_self")[1:]: next_page_url = "https://www.autohome.com.cn" + a["href"] pages_html = requests.get(next_page_url, headers=headers, proxies=proxies) pages_soup = BeautifulSoup(pages_html.text, "html.parser") pages_content_div = pages_soup.find("div", class_="container article").find("div", id="articleContent") for content in pages_content_div.find_all("p"): if content.get_text().strip(): content_dict = {"content": content.get_text()} f.write(json.dumps(content_dict) + "\n") else: try: imgs = content.find_all("a") for i in imgs: img = i.find("img") img_dict = {f"<[image] {img['alt']}> ": "https:" + img["src"]} f.write(json.dumps(img_dict) + "\n") except: continue # 下载评论 f.write("\n") article_comment_span = article_content.find("div", "article-tools").find("span", class_="comment") article_comment_url = "https:" + article_comment_span.find("a")["href"] # print(article_comment_url) basic_reply_url = "https://reply.autohome.com.cn/api/comments/show.json?count=50&" \ "page={}&id={}&appid=1&datatype=jsonp&order=0&replyid=0" html = requests.get(article_comment_url, headers=headers, proxies=proxies) html_soup = BeautifulSoup(html.text, "html.parser") article_id = re.search(r"articleid=([\d]*)#", article_comment_url).groups()[0] first_json_dict = json.loads(requests.get(basic_reply_url.format(1, article_id), headers=headers, proxies=proxies).text[1:-1]) page_num = int(first_json_dict["commentcount"]) // 50 + 1 for i in range(1, page_num + 1): json_dict = json.loads(requests.get(basic_reply_url.format(i, article_id)).text[1:-1]) comment_dicts = json_dict["commentlist"] for comment in comment_dicts: comment_dict = {} comment_dict["RMemberId"] = comment["RMemberId"] comment_dict["RMemberName"] = comment["RMemberName"] comment_dict["replydate"] = comment["replydate"] comment_dict["ReplyId"] = comment["ReplyId"] comment_dict["RObjId"] = comment["RObjId"] comment_dict["RTargetReplyId"] = comment["RTargetReplyId"] comment_dict["RTargetMemberId"] = comment["RTargetMemberId"] comment_dict["RReplyDate"] = comment["RReplyDate"] comment_dict["RContent"] = comment["RContent"] comment_dict["RFloor"] = comment["RFloor"] f.write(json.dumps(comment_dict) + "\n") print(f"**{info}-{each_article_title} completed") else: print(f"\tPicture article, passed. URL is {each_article_url}") if __name__ == '__main__': main_url = r"https://www.autohome.com.cn" main_path = r"D:\pycharm\python_work\autohome\汽车之家" start_time = time.time() proxies = {'proxy': random.choice(http_ip)} headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", "Referer": "https://www.autohome.com.cn" } car_dict = get_all_cars(main_url, main_path) # print(car_dict) # with concurrent.futures.ProcessPoolExecutor(max_workers=8) as p_executor: # for keys, values in car_dict.items(): # for key, value in values.items(): # file_path = main_path + "\\" + str(keys) + "\\" + key # info = f"-{keys}-{key}-" # p_executor.submit(get_each_car_articles, *(main_url, value, file_path, headers, proxies, info)) pool = multiprocessing.Pool() for keys, values in car_dict.items(): print(keys, values) for key, value in values.items(): print("\t", key, value) file_path = main_path + "\\" + str(keys) + "\\" + key info = f"-{keys}-{key}-" pool.apply_async(get_each_car_articles, args=(main_url, value, file_path, headers, proxies, info)) pool.close() pool.join() end_time = time.time() print("##########已完成##########") print(f"spend time {end_time-start_time}") ```
在树莓派上使用 Python,对串口进行读写操作,遇到一个问题,下面是我的一部分代码
import tkinter as tk from tkinter import messagebox # import this to fix messagebox error import pickle import serial ser = serial.Serial('/dev/ttyS0', 9600, parity=serial.PARITY_NONE) # login and sign up button btn_login = tk.Button(window, text='Login', command=usr_login) btn_login.place(x=170, y=230) btn_sign_up = tk.Button(window, text='Sign up', command=usr_sign_up) btn_sign_up.place(x=270, y=230) def usr_config(usr_name): window_config = tk.Toplevel(window) window_config.title('config') window_config.geometry('200x200') print (usr_name) var3 = usr_name def print_selection(): value = lb.get(lb.curselection()) #从列表中光标选中的位置获取值赋给 value var1 = '%d' %value var3 = usr_name var4 = var3 +'I will back in' + var1 + 'minutes' var5 = var4.encode() print(ser.isOpen()) ser.write(var5) tk.messagebox.showinfo(title='Confirmation', message='Your message has been sent successfully'+ '/n' + 'message is:' +var4) window_config.destroy() b1 = tk.Button(window_config, text='print_selection', width=15, height=2, command=print_selection) b1.pack() var2 = tk.StringVar() var2.set((11,22,33,44)) lb = tk.Listbox(window_config, listvariable=var2) #设置 listbox list_items = [1,2,3,4] lb.pack() var3 = tk.StringVar() var3.set(usr_name) window.mainloop() 运行时不报错,但是下位机上的串口不能接收到 ser.write(var5) 通过串口发送的信息 而我直接在 IDLE 中依次输入'var ='I will back in 5 minutes'' var1 = var.encode() “import serial” “ser= serial.Serial('/dev/ttyAMA0',9600)” 'ser.open()' 'ser.write(var1)' 下位机上的接收程序是完全可以正常接收的 百思不得其解,跪求大神帮看看 ![图片说明](https://img-ask.csdn.net/upload/201704/26/1493192711_793814.png)
在c语言程序中调用python脚本
最近在研究yolo,想在yolo源码(c语言)中调用随机森林算法来判断各检测框之间的关系。 只针对行人出检测框,提取框与框之间的四个参数:交并比、中心点距离、颜色直方图差值、面积差。以此作为输入参数。 先利用python完成了模型的训练并保存。在服务器上模拟调用也是可行的。随机生成数据,通过模型判断。 部分代码如下:test.c srand((unsigned)time(NULL)); for (i=0;i<50;i++){ io = rand()/(double)(RAND_MAX); printf("iou:%f\n",io); dist = rand()/(double)(RAND_MAX/100); printf("distance:%f\n",dist); su = rand()/(double)(RAND_MAX/100); printf("sub:%f\n",su); sua = rand()%50000; printf("suba:%d\n",sua); Py_Initialize(); if(!Py_IsInitialized()) { printf("Python init failed!\n"); return; } PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.append('//home//wangxiangsheng//wuhao//test')"); PyObject *pName = NULL; PyObject *pModule = NULL; PyObject *pDict = NULL; PyObject *pFunc = NULL; PyObject *pArgs = NULL; PyObject *pResult = NULL; pName = PyString_FromString("RF"); pModule = PyImport_Import(pName); pDict = PyModule_GetDict(pModule); pFunc = PyDict_GetItemString(pDict,"randomF"); pArgs = Py_BuildValue("(f,f,f,i)",io,dist,su,sua); pResult = PyObject_CallObject(pFunc,pArgs); PyArg_Parse(pResult, "i", &res); printf("result is %d\n",res); ``` 调用的python脚本:RF.py ``` import sklearn as skl from sklearn.externals import joblib from sklearn.ensemble import RandomForestClassifier def randomF(iou,distance,sub,suba): test_data = [[iou,distance,sub,suba]] clf = joblib.load("//home//wangxiangsheng//wuhao//train_model.m") output = clf.predict(test_data) print output return output 但是,当我按照这样改写yolo源码之后,运行起来就会出问题, ![图片说明](https://img-ask.csdn.net/upload/201803/05/1520231552_54452.jpg) 第一帧有数据,没画面,第二帧就直接卡住了。 代码较多,放部分片断 ``` Py_Initialize(); if(!Py_IsInitialized()) { printf("Python init failed!\n"); return; } PyRun_SimpleString("import sys"); PyRun_SimpleString("sys.path.append('//home//wangxiangsheng//darknet//src')"); PyObject *pName = NULL; PyObject *pModule = NULL; PyObject *pDict = NULL; PyObject *pFunc = NULL; PyObject *pArgs = NULL; PyObject *pResult = NULL; pName = PyString_FromString("RF"); pModule = PyImport_Import(pName); if(!pModule) { printf("Load RF.py failed!\n"); getchar(); } pDict = PyModule_GetDict(pModule); if(!pDict) { printf("Can't find dict in RF!\n"); } pFunc = PyDict_GetItemString(pDict,"randomF"); if(!pFunc || !PyCallable_Check(pFunc)) { printf("Can't find function!\n"); getchar(); } for(j=0;j<10;j++){ for(w=j+1;w<39;w++){ float media = box_iou(para[j].p, para[w].p); float iout; if (media<=0){ iout = 0.000000; } else { iout = media; } int p,suba; float res; suba = abs(para[j].barea-para[w].barea); float sub=0; for(p=0;p<64;p++){ sub = sub + pow(para[j].hist[p]-para[w].hist[p],2); } float distance; distance = sqrt(pow(para[w].p.x-para[j].p.x,2)+pow(para[w].p.y-para[j].p.y,2)); printf("%f-%f-%f-%d \n",iout,distance,sub,suba); pArgs = Py_BuildValue("(f,f,f,i)",iout,distance,sub,suba); pResult = PyObject_CallObject(pFunc,pArgs); PyArg_Parse(pResult, "f", &res); printf("result is %f\n",res); ``` 求哪位指导一下,感激不尽!
Python selenium+firefox运行一段时间后卡住不动是什么原因
我用的版本是selenium2.53和firefox30 的经典搭配。。 部分代码如下: self.driver = webdriver.Firefox() self.driver.set_page_load_timeout(5) self.driver.implicitly_wait(5) try: self.driver.get(response.url) except Exception as e: print e pass else: 开始解析。。。 为啥运行了一段时间后,火狐浏览器就开始在那打转然后程序就不往下运行了?求大神解答。。万分感谢
用python scapy库分析pcap数据包错误TypeError、AttributeError
写了个python程序解析流量数据包,用的是scapy库。读取流量较少的pcap包文件时可以顺利运行,读取大点的pcap包就会报错。 错误信息如下: ``` Traceback (most recent call last): File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 235, in __getattr__ fld, v = self.getfield_and_val(attr) TypeError: 'NoneType' object is not iterable During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 235, in __getattr__ fld, v = self.getfield_and_val(attr) TypeError: 'NoneType' object is not iterable During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:\Paper\sta\pcap\特征提取.py", line 22, in <module> bufLen.append(data.len) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 237, in __getattr__ return self.payload.__getattr__(attr) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 237, in __getattr__ return self.payload.__getattr__(attr) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 235, in __getattr__ fld, v = self.getfield_and_val(attr) File "C:\Users\ASUS\AppData\Local\Programs\Python\Python36\lib\site-packages\scapy\packet.py", line 1291, in getfield_and_val raise AttributeError(attr) AttributeError: len ``` 源代码部分: ``` from scapy.all import * from scapy.utils import PcapReader rd = PcapReader('./a.pcap') while True: data = rd.read_packet() if data is None: break else: ''' 分析处理过程 ''' rd.close() ``` 源代码处理过程应该没问题,毕竟可以运行处理小数据包,但数据量一大就会报错。 而且有时候不稳定,简单的同样的代码有时可以运行成功,有时也会报上面的错,我想是不是系统的问题,我用的是在windows10,内存16G应该足够大,为什么会报错呢,求大神解答!
有没有Python大神会做这个吗?
CS1210 Computer Science I: Foundations Homework 2: Fun with Defs! Due Monday, September 21 at 11:59PM 简介 这个家庭作业包括4个挑战, 每一部分都是由一个单独的函数组。每一部分的函数怎么写都有详细描述。 请注意本文中函数的的命名规则,这很重要,因为你的解决方案会通过程序来扫描和进行评分:没有遵循这些要求将导致评估代码失败和等级降低。 我交什么呢? 跟家庭作业1不同的是,所有的功能定义必须提交在单一的,有适当的注释,并且命名为<hawkid>.py的Python文件里。当然,你也可以在截止日期前提一直交新的方案。 注意:如果你交的文件是RTF文件,word文档或其包含Python命令的文档,你将得不到学分。 Pyglish 孩子们总是玩各种语言游戏, 文字转化为晦涩的口语。 Pig Latin就是一个很好的例子。 Pig Latin游戏是将单词的第一个字母会放到最后,并且将一个双元音’ay’放在单词后面。(比如:"together" 会变成 "ogethertay")。另外还有一种类似的语言:Ubbi Dubbi。Ubbi Dubbi被一个叫Zoom的儿童电视节目推广了很多年。在Ubbi Dubbi游戏中,一个额外的"ub"会被插入到音节中。所以 "together"会变成"t-ub-ogeth-ub-er". 在这次的任务当中。我们会用特定的元音、辅音、音节和supports构建一个类似于Ubbi Dubbi的编码系统 首先,会有一些定义:单词是由字母组成的。这些字母会被分类成元音字母和辅音字母。这其实非常难。因为这些单词并不能直接分类。而且它涉及到这些字母的实际发音。所以决定一个单词是元音还是辅音取决于这个字母在句子中的哪个地方出现。为了这次的任务,我们有以下的定义元音字母的规则: ’a’, ’e’, ’i’, and ’o’ 总是元音字母; ’u’ 是元音,除非它后面有 ’g’ or ’q’; ’y’ 是元音除非它是在一个单词的开头; ’w’ 在其他元音后面的时候,它也是一个元音 所有其他的字母都认为是辅音字母 群(cluster)指的是一个连续的元音或辅音序列.。例如,比如在“tomorrow”这个单词中,可以分为6个群[’t’, ’o’, ’m’, ’o’, ’rr’, ’ow’] 。每一个音节由一个元音群跟着一个辅音群。如果一个单词是以辅音开头将会有一个前半音节。如果一个单词是以元音结尾,则会有一个尾半音节。单词’tomorrow’有6个组,但是只有4个音节[’t’,’om’, ’orr’, ’ow’]。其中包含一个前半音节’t’ (不是以元音开头)。和一个尾半音节 ’ow’(不是以辅音结尾)。 最后,单词里的每一个音节当中会被插入一个ub(一个愚蠢的音节,比如 ’ub’或者’oy’)然后重构句子: 当我们使用ub标准的时候’tomorrow’会变成’tubomuborrubow’ ,当我们使用”oy”的时候会变成’toyomoyorroyow’。 我会将会把这个任务分解成4个函数。所有的函数都应该出现在一个同一个文件里。请确认你们的函数是用的我们指定的函数名称——现在这不是你改变函数名称或者参数的时候。如果程序不能运行你的函数,你将得不到学分 Revised September 15, 2015 def vowel(w, i): 根据上述规则,判断w单词中的第i个字母是不是元音字母,如果是的话返回True。例如: >>> vowe l ( ’ t omo r r ow’ , 1 ) Tr u e >>> vowe l ( ’ t omo r r ow’ , 5 ) Fa l s e >>> vowe l ( ’ boy ’ , 2 ) Tr u e >>> vowe l ( ’wh a t ’ , 0 ) Fa l s e 这里定义的元音并不是标准意义上的元音,但是请确保你的代码按照上面的指令精确执行。 def syllables(w): 第二个函数返回w单词的音节列表。但是请确保你的代码按照上面的指令精确执行。例如: >>> s y l l a b l e s ( ’ t omo r r ow’ ) [ ’ t ’ , ’ om’ , ’ o r r ’ , ’ ow’ ] >>> s y l l a b l e s ( ’ y e s t e r d a y ’ ) [ ’ y ’ , ’ e s t ’ , ’ e r d ’ , ’ ay ’ ] >>> s y l l a b l e s ( ’wh a t e v e r ’ ) [ ’wh ’ , ’ a t ’ , ’ e v ’ , ’ e r ’ ] >>> s y l l a b l e s ( ’ s omewh a t ’ ) [ ’ s ’ , ’ om’ , ’ ewh ’ , ’ a t ’ ] >>> s y l l a b l e s ( ’ f o r g e t f u l ’ ) [ ’ f ’ , ’org’ , ’e t f ’ , ’ul ’ ] >>> s y l l a b l e s ( ’ g u i d e l i n e s ’ ) [ ’ gu ’ , ’ i d ’ , ’ e l ’ , ’ i n ’ , ’ e s ’ ] def encode(S, ub): 这个函数中,S代表的是一个句子,ub代表的是被插入的字母。返回被翻译后的句子。比如: >>> e n c o d e ( ’ Fo u r s c o r e a n d s e v e n y e a r s a g o ’ , ’ u b ’ ) ’ Fu b o u r s c u b o r u b e a n d s u b e v u b e n y u b e a r s a g u b o ’ >>> e n c o d e ( ’ Fo u r s c o r e a n d s e v e n y e a r s a g o ’ , ’ a y ’ ) ’ Fa y o u r s c a y o r a y e a n d s a y e v a y e n y a y e a r s a g a y o ’ >>> e n c o d e ( ’ S a n t a b r o u g h t me ma ny Ch r i s tma s t o y s ’ , ’ o y ’ ) ’ So y a n t o y a b r o y o u g h t mo y e mo y a ny Ch r o y i s tmo y a s t o y o y s ’ 注意资本化是保留的,虽然没有标点符号。 2 Revised September 15, 2015 def decode(S, ub): 最后一个函数的功能是解码被翻译后的句子,比如: >>> d e c o d e ( e n c o d e ( ’ S a n t a b r o u g h t me ma ny Ch r i s tma s t o y s ’ , ’ o y ’ ) , ’ o y ’ ) ’ S a n t a b r o u g h t me ma ny Ch r i s tma s t o y s ’ 也许它可能并不容易解码,你会强加什么条件给ub从而使它能被解码?在我的解决方案里,至少,ub它本身就是一个音节,这就简单多了,比如: >>> e n c o d e ( ’ S e e y o u r To y o t a d e a l e r t o d a y ’ , ’ o y ’ ) ’ So y e e y o y o u r To y o y o y o t o y a d o y e a l o y e r t o y o d o y a y ’ >>> d e c o d e ( e n c o d e ( ’ S e e y o u r To y o t a d e a l e r t o d a y ’ , ’ o y ’ ) , ’ o y ’ ) ’ S e e y o u r To y o t a d e a l e r t o d a y ’ 尽管如此,当你解码’Toyota’ ,并且它的ub单词为’oy’的时候。这会是一个噩梦! 最后的思考 这里面没有一个函数是相当困难,并且其中的一部分是用了其他的函数功能去完成整个的任务。我的建议就是按照序列攻克一个个的函数,增加一些新的函数在你们的文件中,最后,如果加上一些测试案例并且能正常运转,这会对你的代码很有帮助。
一道python实现简单编译器的问题
请基于四则运算简单语法,增加带符号(正号或负号)数的语法,并修改所给的程序,实现对带符号数四则运算的求值。 为支持带符号数的编译,在教材案例基础上,添加了: *signop = oneOf('+ -'),用于标示正副符号。 增加了符号的运算优先级的设定:表示signop的优先级最高,单操作数运算符,且是右结合的,识别出符号数后,由EvalSignOp类进行处理。 arith_expr = operatorPrecedence(operand, [(signop, 1, opAssoc.RIGHT, EvalSignOp), (multop, 2, opAssoc.LEFT, EvalMultOp), (plusop, 2, opAssoc.LEFT, EvalAddOp), ]) EvalSignOp类:处理符号数的类,以识别出来的符号tokens列表的第0项为处理对象,该项包含了符号及数值。因此,类初始化函数中要从tokens[0]中提取出sign和value。在eval方法中,根据sign和value得到实际的值。 请在指定位置编写程序,完成EvalSignOp类的定义。 相关知识 程序设计语言的语法定义了一个程序的组成结构或组织形式,即构成语言的各个部分之间的组合规则,但不涉及这些部分的特定含义,也不涉及使用者。如在英语中“Cat dog boy”是不满足语法的句子,因为英语语法中未定义形为“<Noun><noun><noun>”的句子。又例如,Python表达式“3.2+3.2”是语法正确的,但是“3.2 3.2”不是语法正确的。 语义表示满足语法的程序的含义,即各个语法单元的特定含义。如“I was born on the 30th February”,语法上是正确的,但是语义上是错误的,因为2月没有30号。又例如,Python表达式“3.2/'abc'”语法上是正确的,但是语义上是错误的,因为Python的语义定义不允许用一个数去除以一个字符串。程序设计语言的语义包括静态语义和动态语义。静态语义指的是在编写程序时就可以确定的含义,而动态语义则必须在程序运行时才可以确定的含义。语义不清,计算机就无法知道所要解决问题的步骤,也就无法执行程序。 用自然语言描述程序设计语言的语法,存在不同程度的二义性。这种模糊、不确定的方式无法精确定义一门程序设计语言。最著名的文法描述形式是由Backus定义Algol60语言时提出的Backus-Naur范式(Backus-Naur Form, BNF)及其扩展形式EBNF。 下面以各程序设计语言都常见的实数四则运算语法表示为例,简单介绍EBNF范式。 digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; nonzero = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; integer = nonzero, { digit } ; real = integer, ".", integer operand = integer | real operator = "+" | "-" | "*" | "/"; expression = operand | "(", expression, operator, expression, ")"; 上述EBNF定义中,“=”的含义是定义,如digit定义为0~9的数字,“|”表示或,即digit可以是0~9的任一数字,“,”表示字符拼接,“;”是结束符,“{}”表示重复出现,可以是0次,也可以是多次。因此,上述EBNF定义了实数和整数的四则算术运算,整数是由0~9的数字构成的字符串,允许有前0;实数是由两个整数中间夹一个“.”构成。四则运算的表达式可以是一个数,即operand,也可以由括号括起的由运算符拼接两个表达式而成。 基于该EBNF定义,利用Python的pyparsing库,可以为其定义的四则运算表达式实现一个编译器,识别表达式,并求表达式的值。main函数是进行EBNF解析的主要函数,可以看到,与EBNF定义相对应,利用pyparsing提供的机制,对EBNF定义进行了表述转换,例如,integer是0~9数字构成的无前0的字符串,在main 函数中integer定义为"0"|Word(nums[1:],nums),即无前0的数字串。实数定义成由整数数字串、小数点和数字串构成的数字串。 def main(strExpr): integer = "0"|Word(nums[1:],nums) real = Combine(integer + "." + Word(nums)) variable = Word(alphas) operand = real | integer | variable multop = oneOf('* / // %') plusop = oneOf('+ -') operand.setParseAction(EvalConstant) arith_expr = operatorPrecedence(operand, [(multop, 2, opAssoc.LEFT, EvalMultOp), (plusop, 2, opAssoc.LEFT, EvalAddOp), ]) ret = arith_expr.parseString(strExpr, parseAll=True)[0] result = ret.eval() return result 上述定义的main函数中EvalConstant等以Eval开头的是一系列类,用于在识别出相应的语法结构时采取相应的动作。例如EvalConstant用于在识别出一个整数或实数时,创建一个EvalConstant对象。Eval系列类定义如下所示。 class EvalConstant(): def __init__(self, tokens): self.value = tokens[0] def eval(self): try: return int(self.value) except: return float(self.value) def operatorOperands(tokenlist): it = iter(tokenlist) while 1: try: o1 = next(it) o2 = next(it) yield (o1, o2) except StopIteration: break class EvalMultOp(): def __init__(self, tokens): self.value = tokens[0] def eval(self): prod = self.value[0].eval() for op, val in operatorOperands(self.value[1:]): if op == '*': prod *= val.eval() if op == '/': prod /= val.eval() return prod class EvalAddOp(): def __init__(self, tokens): self.value = tokens[0] def eval(self): sum = self.value[0].eval() for op, val in operatorOperands(self.value[1:]): if op == '+': sum += val.eval() if op == '-': sum -= val.eval() return sum 由上述代码可知每个类有一个eval方法,用来对识别出来的语法元素进行语义解释,例如,EvalConstant的eval方法将识别出来的整数或实数数字串分别转换为整数或实数。EvalAddOp的eval方法对识别出来的加(减)法字符串中的运算数,根据运算符(加或减)的不同,做相应的运算。EvalMultOp的eval方法功能是类似的。 以各种四则运算表达式字符串为参数运行main函数,即可得到该表达式的值。例如main(‘1+2+3+4’)结果是10。 编程要求 本关的编程任务是补全11-2.py文件中EvalSignOp类的__init__函数和eval函数,以实现简单编译器的要求。具体要求如下: 本关要求通过补全11-2.py文件中EvalSignOp类的__init__函数和eval函数来实现对带符号数四则运算的求值。 具体请参见后续测试样例。 本关涉及的代码文件11-2.py的代码框架如下: from pyparsing import Word, nums, alphas, Combine, oneOf, opAssoc, operatorPrecedence class EvalConstant(): def __init__(self, tokens): self.value = tokens[0] def eval(self): try: return int(self.value) except: return float(self.value) class EvalSignOp(object): def __init__(self, tokens): # 请在此添加代码,补全函数__init__ #-----------Begin---------- #------------End----------- def eval(self): # 请在此添加代码,补全函数eval #-----------Begin---------- #------------End----------- def operatorOperands(tokenlist): it = iter(tokenlist) while 1: try: o1 = next(it) o2 = next(it) yield (o1, o2) except StopIteration: break class EvalMultOp(): def __init__(self, tokens): self.value = tokens[0] def eval(self): prod = self.value[0].eval() for op, val in operatorOperands(self.value[1:]): if op == '*': prod *= val.eval() if op == '/': prod /= val.eval() return prod class EvalAddOp(): def __init__(self, tokens): self.value = tokens[0] def eval(self): sum = self.value[0].eval() for op, val in operatorOperands(self.value[1:]): if op == '+': sum += val.eval() if op == '-': sum -= val.eval() return sum def main(strExpr): integer = "0"|Word(nums[1:],nums) real = Combine(integer + "." + Word(nums)) variable = Word(alphas) operand = real | integer | variable multop = oneOf('* / // %') plusop = oneOf('+ -') signop = oneOf('+ -') operand.setParseAction(EvalConstant) arith_expr = operatorPrecedence(operand, [(signop, 1, opAssoc.RIGHT, EvalSignOp), (multop, 2, opAssoc.LEFT, EvalMultOp), (plusop, 2, opAssoc.LEFT, EvalAddOp), ]) ret = arith_expr.parseString(strExpr, parseAll=True)[0] result = ret.eval() return result if __name__ == '__main__': exprs = ['-12*(3*(-3))-100+(-55)', '90/(-12-(-13))', '1+2+3+4+(-10)-(-11)'] for expr in exprs: print(main(expr))
修改了程序都draw a square 但是运行不出来?
下面是我修改的代码,预计让它前进然后转一个五边形,然而…… ``` # -*- coding: UTF-8 -*- #!/usr/bin/env python #前进1m,画边长( 0.2 )m的五边形 import rospy from geometry_msgs.msg import Twist from math import radians class ROUTE(): def __init__(self): # 节点初始化 rospy.init_node('route') # ctrl + c停止 rospy.on_shutdown(self.shutdown) self.cmd_vel = rospy.Publisher('cmd_vel_mux/input/navi', Twist, queue_size=10) #更新频率 5 HZ r = rospy.Rate(5); # 两个不同的Twist()函数。一个向前直走,一个转角度 # 向前走 0.2 m/s move_cmd = Twist() move_cmd.linear.x = 0.2 #转54度 turn_cmd = Twist() turn_cmd.linear.x = 0 turn_cmd.angular.z = radians(18); #直线不动,只转圈 count = 0 #到达指定起点 rospy.loginfo("前进ing") for x in range(0,20): self.cmd_vel.publosh(move_cmd) r.sleep() #第一条边,须先转54度 rospy.loginfo("进入正轨ing") for x in range(0,15): self.cmd_vel.publosh(turn_cmd) r.sleep() while not rospy.is_shutdown(): # 向前0.2m rospy.loginfo("正在走ing") for x in range(0,5): self.cmd_vel.publish(move_cmd) r.sleep() #准备拍照,转234度正对物体(13*18) rospy.loginfo("准备拍照ing") for x in range(0,65): self.cmd_vel.publish(turn_cmd) r.sleep() # 转54度(3*18)继续前进 rospy.loginfo("继续前进ing") for x in range(0,15): self.cmd_vel.publish(turn_cmd) r.sleep() count = count + 1 if(count == 5): count = 0 if(count == 0): rospy.loginfo("好像走完了,嘻嘻") def shutdown(self): # stop turtlebot rospy.loginfo("结束了,嘤嘤嘤") self.cmd_vel.publish(Twist()) rospy.sleep(1) if __name__ == '__main__': try: ROUTE() except: rospy.loginfo("停了啊。") ``` ``` **hazel@hazel-Lenovo-Legion-Y7000:~/helloworld/turtlebot$ python route.py [INFO] [1554016863.412115]: 前进ing [INFO] [1554016863.412651]: 停了啊。 [INFO] [1554016863.413453]: 结束了,嘤嘤嘤** 出来的就是这个,为什么中间的部分没有运行?
tensorflow-gpu Failed to get convolution algorithm.
成功安装了gpu版的tensorflow之后,尝试跑两个神经网 第一个:全连接的DNN 关键代码如下: ``` xs=tf.placeholder(tf.float32,[None,10]) ys=tf.placeholder(tf.float32,[None,7]) 'layer1:ful connect' W_fc1=weight_variable([10,5000],name_data=None) b_fc1=bias_variable([5000],name_data=None) h_fc1=tf.nn.relu(tf.matmul(xs,W_fc1)+b_fc1) 'layer2:ful connect' W_fc2=weight_variable([5000,5000],name_data=None) b_fc2=bias_variable([5000],name_data=None) h_fc2=tf.nn.relu(tf.matmul(h_fc1,W_fc2)+b_fc2) 'layer3:ful connect' W_fc3=weight_variable([5000,5000],name_data=None) b_fc3=bias_variable([5000],name_data=None) h_fc3=tf.nn.relu(tf.matmul(h_fc2,W_fc3)+b_fc3) 'output layer::ful connect,maxsoft' W_fc4=weight_variable([5000,7],name_data=None) b_fc4=bias_variable([7],name_data=None) output=tf.nn.sigmoid(tf.matmul(h_fc3,W_fc4)+b_fc4) ``` 能够顺利的利用gpu加速,确实比cpu的计算速度快不少。 然而,在跑cnn的时候(部分代码如下) ``` 'def weights' def weight_variable(shape,name_data): initial=tf.truncated_normal(shape,stddev=0.1) return tf.Variable(initial,dtype=tf.float32,name=name_data) 'def biases' def bias_variable(shape,name_data): initial=tf.constant(0.1,shape=shape) return tf.Variable(initial,dtype=tf.float32,name=name_data) 'def conv2d layer' def conv2d(x,W): return tf.nn.conv2d(x,W,strides=[1,1,1,1],padding='SAME') 'def pooling layer as max_pool' def max_pool_2x2_v(x): return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding='VALID') 'def pooling layer as max_pool' def max_pool_2x2_s(x): return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,1,1,1],padding='SAME') #input layer 'placeholder xs & ys' xs=tf.placeholder(tf.float32,[None,64]) ys=tf.placeholder(tf.float32,[None,1]) 'reshape the xs as x_image,which shape is 10*10' x_image=tf.reshape(xs,[-1,8,8,1]) print('red input::',x_image) #layer2:conv layer 2 patches 'patch1' W_conv_r_1_1=weight_variable([3,3,1,20],name_data='W_conv_r_1_1') b_conv_r_1_1=bias_variable([20],name_data='b_conv_r_1_1') h_conv_r_1_1=tf.nn.relu6(conv2d(x_image,W_conv_r_1_1)+b_conv_r_1_1) 'patch2' W_conv_r_1_2=weight_variable([3,3,1,10],name_data='W_conv_r_1_2') b_conv_r_1_2=bias_variable([10],name_data='b_conv_r_1_2') h_conv_r_1_2=tf.nn.relu6(conv2d(x_image,W_conv_r_1_2)+b_conv_r_1_2) 'concat to layer2' h_conv_r_1=tf.concat([h_conv_r_1_1,h_conv_r_1_2],3) print("red layer2::",h_conv_r_1) #layer3:conv layer:1 patch add with h_conv_r_1_2 'patch1' W_conv_r_2_1=weight_variable([5,5,30,30],name_data='W_conv_r_2_1') b_conv_r_2_1=bias_variable([30],name_data='b_conv_r_2_1') h_conv_r_2_1=tf.nn.elu(conv2d(h_conv_r_1,W_conv_r_2_1)+b_conv_r_2_1) 'patch for next layer' W_conv_r_2_2=weight_variable([5,5,30,15],name_data='W_conv_r_2_2') b_conv_r_2_2=bias_variable([15],name_data='b_conv_r_2_2') h_conv_r_2_2=tf.nn.elu(conv2d(h_conv_r_1,W_conv_r_2_2)+b_conv_r_2_2) 'concat for layer3' h_conv_r_2=tf.concat([h_conv_r_2_1,h_conv_r_1_2],3) print('red layer3;:',h_conv_r_2) ``` 上述代码是一个利用cnn训练黑白棋的程序,可以在CPU环境下顺利的运行,但是在gpu环境下,运行时会报错:Failed to get convolution algorithm (无法获得卷积算法) 完整的报错信息如下: ``` Traceback (most recent call last): File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1334, in _do_call return fn(*args) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1319, in _run_fn options, feed_dict, fetch_list, target_list, run_metadata) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1407, in _call_tf_sessionrun run_metadata) tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. [[{{node Conv2D}} = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Reshape, W_conv_r_1_1/read)]] [[{{node Sigmoid/_75}} = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_105_Sigmoid", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\fengg\Desktop\Othello with ResNet 3\Othello with ResNet-large\Othello with ResNet-large\train_ResNet.py", line 326, in <module> try_point=sess.run(prediction_r, feed_dict={xs:board_try,ys:[[0.0001]]}) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\client\session.py", line 929, in run run_metadata_ptr) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1152, in _run feed_dict_tensor, options, run_metadata) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1328, in _do_run run_metadata) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1348, in _do_call raise type(e)(node_def, op, message) tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. [[node Conv2D (defined at C:\Users\fengg\Desktop\Othello with ResNet 3\Othello with ResNet-large\Othello with ResNet-large\train_ResNet.py:31) = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Reshape, W_conv_r_1_1/read)]] [[{{node Sigmoid/_75}} = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_105_Sigmoid", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]] Caused by op 'Conv2D', defined at: File "<string>", line 1, in <module> File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\idlelib\run.py", line 130, in main ret = method(*args, **kwargs) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\idlelib\run.py", line 357, in runcode exec(code, self.locals) File "C:\Users\fengg\Desktop\Othello with ResNet 3\Othello with ResNet-large\Othello with ResNet-large\train_ResNet.py", line 57, in <module> h_conv_r_1_1=tf.nn.relu6(conv2d(x_image,W_conv_r_1_1)+b_conv_r_1_1) File "C:\Users\fengg\Desktop\Othello with ResNet 3\Othello with ResNet-large\Othello with ResNet-large\train_ResNet.py", line 31, in conv2d return tf.nn.conv2d(x,W,strides=[1,1,1,1],padding='SAME') File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py", line 1044, in conv2d data_format=data_format, dilations=dilations, name=name) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 787, in _apply_op_helper op_def=op_def) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\util\deprecation.py", line 488, in new_func return func(*args, **kwargs) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 3274, in create_op op_def=op_def) File "C:\Users\fengg\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 1770, in __init__ self._traceback = tf_stack.extract_stack() UnknownError (see above for traceback): Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above. [[node Conv2D (defined at C:\Users\fengg\Desktop\Othello with ResNet 3\Othello with ResNet-large\Othello with ResNet-large\train_ResNet.py:31) = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Reshape, W_conv_r_1_1/read)]] [[{{node Sigmoid/_75}} = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_105_Sigmoid", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]] ``` 请问这个问题该如何解决,谢谢了!
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱 极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件, 选择安装到U盘(按照操作无需更改) 三、重启进入pe系统 1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12) 选择需要启...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Ol4网格生成以及优化
概述 先描述一下大致场景:以0.05为单元格大小生成网格,并在地图上绘制,绘制的时候需要区分海陆。本文以此需求为契机,简单描述一下该需求的实现以及如何来优化。 效果 实现 优化前 var source = new ol.source.Vector({ features: [] }); var vector = new ol.layer.Vector({ source...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库 回到首页 目录: Python语言高频重点汇总 目录: 1. 函数-传参 2. 元类 3. @staticmethod和@classmethod两个装饰器 4. 类属性和实例属性 5. Python的自省 6. 列表、集合、字典推导式 7. Python中单下划线和双下划线 8. 格式化字符串中的%和format 9. 迭代器和生成器 10...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
程序员该看的几部电影
1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何...
蓝桥杯知识点汇总:基础知识和常用算法
文章目录基础语法部分:算法竞赛常用API:算法部分数据结构部分 此系列包含蓝桥杯绝大部分所考察的知识点,以及真题题解~ 基础语法部分: 备战蓝桥杯java(一):一般输入输出 和 快速输入输(BufferedReader&amp;BufferedWrite) 备战蓝桥杯java(二):java编程规范和常用数据类型 备战蓝桥杯java(三):常用功能符以及循环结构和分支结构 备战蓝桥杯java(四...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
实现简单的轮播图(单张图片、多张图片)
前言 刚学js没多久,这篇博客就当做记录了,以后还会完善的,希望大佬们多多指点。ps:下面出现的都是直接闪动,没有滑动效果的轮播图。 单张图片的替换 · ...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 意思是密码。 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mkdir:Make directory ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
疫情数据接口api
返回json示例 { "errcode":0,//0标识接口正常 "data":{ "date":"2020-01-30 07:47:23",//实时更新时间 "diagnosed":7736,//确诊人数 "suspect":12167,//疑是病例人数 "death":170,//死亡人数 "cur...
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药...
Java与Python学习通法(1)和(2)序言和编程语言发展史怎么学
dd
注定不平凡的2020年
1 现在是2020年1月31号,农历正月初七,1月的最后一天。 原本是今天开工上班,但是由于新型肺炎的影响, 目前还蜗居在家里,不敢出门。推迟到正月十六才正式开工,但是即便到了公司,也不可能立马就能干活。 所以,之前的一切工作计划,终于还是打乱了。 2 这是上班以来最长的一个春节假期,但也是最无聊的一个假期,谁都想不到,竟然是以这种方式延长了这个特殊的节假日。 每天打开电视,滚动的新闻播报病情; ...
疫情防控,开发者集结出战!
作者 | 屠敏出品 | CSDN(ID:CSDNnews)2020 年伊始,病毒肆虐,人心惶惶。截止北京时间 1 月 31 日 15 时 30 分,全国确诊新型冠状病毒肺炎的数字已达到了...
面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
初识 MyBatis MyBatis 是第一个支持自定义 SQL、存储过程和高级映射的类持久框架。MyBatis 消除了大部分 JDBC 的样板代码、手动设置参数以及检索结果。MyBatis 能够支持简单的 XML 和注解配置规则。使 Map 接口和 POJO 类映射到数据库字段和记录。 MyBatis 的特点 那么 MyBatis 具有什么特点呢?或许我们可以从如下几个方面来描述 MyBati...
程序员回家过年,外婆说没带女朋友别回来了?喝了老爸89年的酒,当场反目。
点赞再看,养成习惯,微信搜索【三太子敖丙】关注这个被微信官方推荐过的逗比 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点系统复习,希望我们一起有点东西。 注:本文是水日常的文章,不是技术文,看技术的同学可以右划了。 今天是除夕,帅丙也不水太多东西了,先祝大家...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
作为程序员你是考虑在家办公还是回程复工
前言最近“新冠肺炎疫情”暴发期,相信很多同学跟我一样无法按时返程上班。可能马上需要在家办公一段时间了。根据我这几天的亲身经历来讲述一下供你参考。最佳选择最佳选择就是在家中远程办公。减少人...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问