zhouxiaoxi commited on
Commit
abb51e8
·
verified ·
1 Parent(s): 5a8a883

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +116 -146
app.py CHANGED
@@ -1,154 +1,124 @@
1
  import gradio as gr
2
- import numpy as np
3
- import random
4
-
5
- # import spaces #[uncomment to use ZeroGPU]
6
- from diffusers import DiffusionPipeline
7
  import torch
8
-
9
- device = "cuda" if torch.cuda.is_available() else "cpu"
10
- model_repo_id = "stabilityai/sdxl-turbo" # Replace to the model you would like to use
11
-
12
- if torch.cuda.is_available():
13
- torch_dtype = torch.float16
14
- else:
15
- torch_dtype = torch.float32
16
-
17
- pipe = DiffusionPipeline.from_pretrained(model_repo_id, torch_dtype=torch_dtype)
18
- pipe = pipe.to(device)
19
-
20
- MAX_SEED = np.iinfo(np.int32).max
21
- MAX_IMAGE_SIZE = 1024
22
-
23
-
24
- # @spaces.GPU #[uncomment to use ZeroGPU]
25
- def infer(
26
- prompt,
27
- negative_prompt,
28
- seed,
29
- randomize_seed,
30
- width,
31
- height,
32
- guidance_scale,
33
- num_inference_steps,
34
- progress=gr.Progress(track_tqdm=True),
35
- ):
36
- if randomize_seed:
37
- seed = random.randint(0, MAX_SEED)
38
-
39
- generator = torch.Generator().manual_seed(seed)
40
-
41
- image = pipe(
42
- prompt=prompt,
43
- negative_prompt=negative_prompt,
44
- guidance_scale=guidance_scale,
45
- num_inference_steps=num_inference_steps,
46
- width=width,
47
- height=height,
48
- generator=generator,
49
- ).images[0]
50
-
51
- return image, seed
52
-
53
-
54
- examples = [
55
- "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k",
56
- "An astronaut riding a green horse",
57
- "A delicious ceviche cheesecake slice",
58
- ]
59
-
60
- css = """
61
- #col-container {
62
- margin: 0 auto;
63
- max-width: 640px;
64
- }
65
- """
66
-
67
- with gr.Blocks(css=css) as demo:
68
- with gr.Column(elem_id="col-container"):
69
- gr.Markdown(" # Text-to-Image Gradio Template")
70
-
71
  with gr.Row():
72
- prompt = gr.Text(
73
- label="Prompt",
74
- show_label=False,
75
- max_lines=1,
76
- placeholder="Enter your prompt",
77
- container=False,
78
- )
79
-
80
- run_button = gr.Button("Run", scale=0, variant="primary")
81
-
82
- result = gr.Image(label="Result", show_label=False)
83
-
84
- with gr.Accordion("Advanced Settings", open=False):
85
- negative_prompt = gr.Text(
86
- label="Negative prompt",
87
- max_lines=1,
88
- placeholder="Enter a negative prompt",
89
- visible=False,
90
- )
91
-
92
- seed = gr.Slider(
93
- label="Seed",
94
- minimum=0,
95
- maximum=MAX_SEED,
96
- step=1,
97
- value=0,
98
- )
99
-
100
- randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
101
-
102
- with gr.Row():
103
- width = gr.Slider(
104
- label="Width",
105
- minimum=256,
106
- maximum=MAX_IMAGE_SIZE,
107
- step=32,
108
- value=1024, # Replace with defaults that work for your model
109
  )
110
-
111
- height = gr.Slider(
112
- label="Height",
113
- minimum=256,
114
- maximum=MAX_IMAGE_SIZE,
115
- step=32,
116
- value=1024, # Replace with defaults that work for your model
 
 
 
 
 
117
  )
118
-
119
- with gr.Row():
120
- guidance_scale = gr.Slider(
121
- label="Guidance scale",
122
- minimum=0.0,
123
- maximum=10.0,
124
- step=0.1,
125
- value=0.0, # Replace with defaults that work for your model
126
  )
127
-
128
- num_inference_steps = gr.Slider(
129
- label="Number of inference steps",
130
- minimum=1,
131
- maximum=50,
132
- step=1,
133
- value=2, # Replace with defaults that work for your model
134
- )
135
-
136
- gr.Examples(examples=examples, inputs=[prompt])
137
- gr.on(
138
- triggers=[run_button.click, prompt.submit],
139
- fn=infer,
140
- inputs=[
141
- prompt,
142
- negative_prompt,
143
- seed,
144
- randomize_seed,
145
- width,
146
- height,
147
- guidance_scale,
148
- num_inference_steps,
149
- ],
150
- outputs=[result, seed],
151
- )
 
 
 
 
 
 
 
 
 
 
 
 
152
 
153
  if __name__ == "__main__":
154
- demo.launch()
 
 
1
  import gradio as gr
 
 
 
 
 
2
  import torch
3
+ from transformers import BertTokenizer
4
+
5
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
6
+ names = ['负向', '正向']
7
+
8
+ # 分词器
9
+ tokenizer = BertTokenizer.from_pretrained("bert-base-chinese")
10
+
11
+ # 加载预训练模型
12
+ bert_model = BertModel.from_pretrained("bert-base-chinese").to(device)
13
+ model = Model(bert_model).to(device)
14
+ model.load_state_dict(torch.load("/params/1bert.pt"))
15
+ # 切换到eval模式
16
+ model.eval()
17
+
18
+ def collate_fn(data):
19
+ sentes = []
20
+ sentes.append(data)
21
+
22
+ #编码
23
+ data = tokenizer.batch_encode_plus(
24
+ batch_text_or_text_pairs=sentes,
25
+ truncation=True,
26
+ padding="max_length",
27
+ max_length=350,
28
+ return_tensors="pt",
29
+ return_length=True
30
+ )
31
+ input_ids = data["input_ids"]
32
+ attention_mask = data["attention_mask"]
33
+ token_type_ids = data["token_type_ids"]
34
+ return input_ids, attention_mask, token_type_ids
35
+
36
+
37
+ def analyze_sentiment(text):
38
+ input_ids, attention_mask, token_type_ids = collate_fn(text)
39
+ input_ids = input_ids.to(device)
40
+ attention_mask = attention_mask.to(device)
41
+ token_type_ids = token_type_ids.to(device)
42
+ # 上游不参与训练
43
+ with torch.no_grad():
44
+ out = model(input_ids, attention_mask, token_type_ids)
45
+ # 找到每个样本在指定维度上的最大值的索引
46
+ out = out.argmax(dim=1)
47
+ return f"{names[out]}评价", names[out]
48
+
49
+ def create_interface():
50
+ """
51
+ 创建Gradio界面
52
+ """
53
+ with gr.Blocks(title="情感分析应用", theme=gr.themes.Soft()) as demo:
54
+ gr.Markdown("# 🎭 情感分析应用")
55
+ gr.Markdown("输入文本,AI将分析其情感倾向")
56
+
 
 
 
 
 
 
 
 
 
57
  with gr.Row():
58
+ with gr.Column(scale=2):
59
+ # 输入区域
60
+ text_input = gr.Textbox(
61
+ label="输入要分析的文本",
62
+ placeholder="请输入您想要分析情感的文本...",
63
+ lines=4,
64
+ max_lines=10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  )
66
+
67
+ # 按钮
68
+ with gr.Row():
69
+ analyze_btn = gr.Button("🔍 分析情感", variant="primary")
70
+ clear_btn = gr.Button("🗑️ 清空", variant="secondary")
71
+
72
+ with gr.Column(scale=2):
73
+ # 输出区域
74
+ result_summary = gr.Textbox(
75
+ label="分析结果",
76
+ lines=3,
77
+ interactive=False
78
  )
79
+
80
+ # 情感标签显示
81
+ sentiment_label = gr.Label(
82
+ label="情感分类",
 
 
 
 
83
  )
84
+
85
+ # 示例文本
86
+ gr.Markdown("### 📝 示例文本")
87
+ examples = gr.Examples(
88
+ examples=[
89
+ ["这个产品真的很棒,我非常满意!"],
90
+ ["服务态度太差了,完全不推荐"],
91
+ ["还可以吧,没什么特别的感觉"],
92
+ ["质量很好,物流也很快,五星好评!"],
93
+ ["价格太贵了,性价比不高"]
94
+ ],
95
+ inputs=text_input,
96
+ outputs=[result_summary, sentiment_label],
97
+ fn=analyze_sentiment,
98
+ cache_examples=False
99
+ )
100
+
101
+ # 绑定事件
102
+ analyze_btn.click(
103
+ fn=analyze_sentiment,
104
+ inputs=text_input,
105
+ outputs=[result_summary, sentiment_label]
106
+ )
107
+
108
+ clear_btn.click(
109
+ fn=lambda: ("", "", ""),
110
+ outputs=[text_input, result_summary, sentiment_label]
111
+ )
112
+
113
+ # 回车键触发分析
114
+ text_input.submit(
115
+ fn=analyze_sentiment,
116
+ inputs=text_input,
117
+ outputs=[result_summary, sentiment_label]
118
+ )
119
+
120
+ return demo
121
 
122
  if __name__ == "__main__":
123
+ demo = create_interface()
124
+ demo.launch(debug=True)