[Ruby笔记]14.Ruby local_variable

Ruby local_variable 可用命名格式

a
_a
name
first_name
hello48
user_ID
_

Ruby如何区分local_variable /keyword/ method call

Identifierdifference
keyword诸如defif之类keyword,Ruby内置一张关键词的表,可以直接判断出来
local_variable赋值符号 = 左边的就是local_variable
method call其余的就是method call

复习 : ruby -e 可以直接执行脚本
Ruby可以知道abc肯定不是keyword,但是还无法确定abclocal_varaible 还是 method call

PS C:\Users\Administrator> ruby -e "abc"

-e:1:in `<main>': undefined local variable or method `abc' for main:Object (NameError)

reference

《The Well-Grounded Rubyist, Second Edition》
(https://www.manning.com/books/the-well-grounded-rubyist-second-edition)
2.5.4. Local variables and the things that look like them

のほほ~ん
∫∫ ∫∫
 ∧_∧
 (´∀`)つ
|∪ ̄ ̄ ̄|
| ┼─┼ |
| /\ |
|/ 茶 \|
\___/
 └─┘

http://emoji.vis.ne.jp/nohohon5.htm
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
def unzip_infer_data(src_path,target_path): ''' 解压预测数据集 ''' if(not os.path.isdir(target_path)): z = zipfile.ZipFile(src_path, 'r') z.extractall(path=target_path) z.close() def load_image(img_path): ''' 预测图片预处理 ''' img = Image.open(img_path) if img.mode != 'RGB': img = img.convert('RGB') img = img.resize((224, 224), Image.BILINEAR) img = np.array(img).astype('float32') img = img.transpose((2, 0, 1)) # HWC to CHW img = img/255 # 像素值归一化 return img infer_src_path = '/home/aistudio/data/data55032/archive_test.zip' infer_dst_path = '/home/aistudio/data/archive_test' unzip_infer_data(infer_src_path,infer_dst_path) para_state_dict = paddle.load("MyCNN") model = MyCNN() model.set_state_dict(para_state_dict) #加载模型参数 model.eval() #验证模式 #展示预测图片 infer_path='data/archive_test/alexandrite_6.jpg' img = Image.open(infer_path) plt.imshow(img) #根据数组绘制图像 plt.show() #显示图像 #对预测图片进行预处理 infer_imgs = [] infer_imgs.append(load_image(infer_path)) infer_imgs = np.array(infer_imgs) label_dic = train_parameters['label_dict'] for i in range(len(infer_imgs)): data = infer_imgs[i] dy_x_data = np.array(data).astype('float32') dy_x_data=dy_x_data[np.newaxis,:, : ,:] img = paddle.to_tensor (dy_x_data) out = model(img) lab = np.argmax(out.numpy()) #argmax():返回最大数的索引 print("第{}个样本,被预测为:{},真实标签为:{}".format(i+1,label_dic[str(lab)],infer_path.split('/')[-1].split("_")[0])) print("结束") 以上代码进行DNN预测,根据这段代码写一段续写一段利用这个模型进行宝石预测的GUI界面,其中包含预测结果是否正确的判断功能
最新发布
05-25
好的,以下是一个简单的GUI界面的代码,可以利用模型进行宝石预测,并且包含预测结果是否正确的判断功能。 ```python import tkinter as tk from tkinter import filedialog from PIL import Image, ImageTk import numpy as np import paddle class MyCNN(paddle.nn.Layer): # 省略模型定义,保持与上述代码一致 def unzip_infer_data(src_path,target_path): ''' 解压预测数据集 ''' if(not os.path.isdir(target_path)): z = zipfile.ZipFile(src_path, 'r') z.extractall(path=target_path) z.close() def load_image(img_path): ''' 预测图片预处理 ''' img = Image.open(img_path) if img.mode != 'RGB': img = img.convert('RGB') img = img.resize((224, 224), Image.BILINEAR) img = np.array(img).astype('float32') img = img.transpose((2, 0, 1)) # HWC to CHW img = img/255 # 像素值归一化 return img def predict(image_path, model): label_dic = train_parameters['label_dict'] data = load_image(image_path) dy_x_data = np.array(data).astype('float32') dy_x_data = dy_x_data[np.newaxis,:, : ,:] img = paddle.to_tensor(dy_x_data) out = model(img) lab = np.argmax(out.numpy()) #argmax():返回最大数的索引 return label_dic[str(lab)], label_dic def check_result(predicted_label, true_label): if predicted_label == true_label: return True else: return False class App: def __init__(self, root): self.root = root self.model = MyCNN() para_state_dict = paddle.load("MyCNN") self.model.set_state_dict(para_state_dict) self.model.eval() #验证模式 self.label_dic = train_parameters['label_dict'] self.true_label = '' self.predicted_label = '' self.result_label = '' self.canvas = tk.Canvas(root, width=300, height=300) self.canvas.pack(side='left') self.frame = tk.Frame(root) self.frame.pack(side='right', padx=10) self.select_image_button = tk.Button( self.frame, text='选择图片', command=self.select_image) self.select_image_button.pack(pady=10) self.predict_button = tk.Button( self.frame, text='预测', command=self.predict) self.predict_button.pack(pady=10) self.result_label = tk.Label(self.frame, text='') self.result_label.pack(pady=10) def select_image(self): file_path = filedialog.askopenfilename() if file_path: self.image_path = file_path self.show_image() def show_image(self): image = Image.open(self.image_path) image = image.resize((300, 300)) self.photo = ImageTk.PhotoImage(image) self.canvas.create_image(0, 0, anchor='nw', image=self.photo) def predict(self): if hasattr(self, 'image_path'): self.true_label = self.image_path.split('/')[-1].split("_")[0] self.predicted_label, label_dic = predict(self.image_path, self.model) result = check_result(self.predicted_label, self.true_label) if result: self.result_label.config(text='预测结果正确') else: self.result_label.config(text='预测结果错误') if __name__ == '__main__': infer_src_path = '/home/aistudio/data/data55032/archive_test.zip' infer_dst_path = '/home/aistudio/data/archive_test' unzip_infer_data(infer_src_path, infer_dst_path) train_parameters = {'label_dict': {'0': 'alexandrite', '1': 'aquamarine', '2': 'diamond', '3': 'emerald', '4': 'opal', '5': 'pearl', '6': 'peridot', '7': 'ruby', '8': 'sapphire', '9': 'spinel', '10': 'tanzanite', '11': 'topaz', '12': 'tourmaline', '13': 'tsavorite'}} root = tk.Tk() app = App(root) root.mainloop() ``` 你可以把以上代码保存为.py文件,在命令行中运行即可看到GUI界面。界面包含一个选择图片的按钮和一个预测按钮。选择图片后,点击预测按钮可以进行宝石预测,并且会显示预测结果是否正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值