這次通過編寫程序對iris數據進行進行處理,得到了可以作爲數據集的iris數組,使用這個數組來訓練神經網絡。
21.讀取文件並存儲爲數組
filename = '/home/farell/pythonProject/iris_change.data'
input = [[0.0 for i in range(4)] for i in range(150)]
output = [[0.0 for i in range(3)] for i in range(150)]
i=0
with open(filename, 'r') as file_to_read:
while True:
lines = file_to_read.readline()
lines = lines.strip('\n')
# print(lines)
if not lines :
break
input[i][0], input[i][1],input[i][2],input[i][3],output[i][0],output[i][1],\
output[i][2] = [float(j) for j in lines.split(',',6)]
i=i+1
print(input)
print(output)
22.使用tensorflow訓練基於iris數據集的神經網絡
import time
import tensorflow as tf
filename = '/home/farell/pythonProject/iris_change.data'
#初始化一個數組,大小依照讀取的文件來決定
input = [[0.0 for i in range(4)] for i in range(150)]
output = [[0.0 for i in range(3)] for i in range(150)]
i=0
#添加層函數
def add_layer(inputs,in_size,out_size,activation_function=None):
Weights = tf.Variable(tf.random_normal([in_size, out_size]))
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
Wx_plus_b = tf.matmul(inputs, Weights) + biases
if activation_function is None:
outputs = Wx_plus_b
else:
outputs = activation_function(Wx_plus_b)
return outputs
#文件打開處理,將每行的數據保存到數組中
with open(filename, 'r') as file_to_read:#消除換行符對於切割造成的影響
while True:
#讀取一行
lines = file_to_read.readline()
lines = lines.strip('\n')
if not lines :
break
#切割並存儲到數組中
input[i][0], input[i][1],input[i][2],input[i][3],output[i][0],output[i][1],\
output[i][2] = [float(j) for j in lines.split(',',6)]
i=i+1
# print(input)
# print(output)
#輸入層設置
xs = tf.placeholder(tf.float32,[None,4])
ys = tf.placeholder(tf.float32,[None,3])
#添加輸入層,定義輸入爲4,隱藏層爲10
l1 = add_layer(xs,4,10,activation_function=tf.nn.sigmoid)
#添加輸出層,定義隱藏層爲10,輸出爲3
prediction = add_layer(l1,10,3,activation_function=None)
#錯誤率計算
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),
reduction_indices=[1]))
#定義步長和優化器
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
init = tf.global_variables_initializer()
#初始化tensorflow
sess= tf.Session()
sess.run(init)
i=0
curloss = 1;
start = time.time()
#在錯誤率高於0.03之前持續計算
while curloss>0.03:
sess.run(train_step,feed_dict={xs:input,ys:output})
if i%500 == 0:
prediction_value = sess.run(prediction, feed_dict={xs: input})
curloss = sess.run(loss,feed_dict={xs:input,ys:output})
print(curloss)
i = i + 1
#輸出訓練神經網絡所用的時間
end = time.time()
print("Using time: ",(end-start))
23.輸出目錄下的所有文件
import os.path
import os
import PIL
path = r"E:\qqtemp"
print("Fuck you mother,sb python")
dirs = os.listdir(path)
for file in dirs:
temp = path + '\\' + file
print(temp)
24.將GIF動態圖片分解並將每幀保存爲png文件
def resolveGifImage(filepath):
im = Image.open(filepath)
mode = 'partial' #圖片模式
i = 0
p = im.getpalette() #獲取調色板信息
last_frame = im.convert('RGBA')#轉換圖片色彩模式
try:
while True:
print( "mode:%s No.%s size:%s tile:%s" % ( mode, i, im.size, im.tile))
if not im.getpalette():#如果不存在調色板
im.putpalette(p)#添加一個調色板
new_frame = Image.new('RGBA', im.size)
if mode == 'partial':
new_frame.paste(last_frame)
new_frame.paste(im, (0, 0), im.convert('RGBA'))
new_frame.save('resolve//%s-%d.png' % (''.join(os.path.basename(filepath).split('.')[:-1]), i), 'PNG')
i += 1
last_frame = new_frame
im.seek(im.tell() + 1)
except EOFError:
pass
resolveGifImage("load.gif")
參考:點擊打開鏈接
25.在圖片上添加文字
def addTextToImage(file,x,y,str):
im = Image.open(file)
draw = ImageDraw.Draw(im)
draw.text((x,y),str,(0,0,0))
draw = ImageDraw.Draw(im)
shutil.copyfile(file, file+".bak")
im.save(file)
addTextToImage("resolve//load-0.png",10,20,"Loading..")#在10,10位置添加一個Loading
使用默認字體,這裏有個缺點是,使用PIL不能輸入中文
26.向GIF動態圖片上添加文字
通過24和25的函數,目前可以拆解圖片以及添加文字,因此再編寫一個合成爲gif圖片的函數即可# -*- coding: UTF-8 -*-
import imageio
import os
import shutil
import glob
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
def resolveGifImage(filepath):
im = Image.open(filepath)
mode = 'partial' #圖片模式
i = 0
p = im.getpalette() #獲取調色板信息
last_frame = im.convert('RGBA')#轉換圖片色彩模式
if os.path.exists('resolve') == False:
os.mkdir("resolve")
try:
while True:
print( "mode:%s No.%s size:%s tile:%s" % ( mode, i, im.size, im.tile))
if not im.getpalette():#如果不存在調色板
im.putpalette(p)#添加一個調色板
new_frame = Image.new('RGBA', im.size)
if mode == 'partial':
new_frame.paste(last_frame)
new_frame.paste(im, (0, 0), im.convert('RGBA'))
new_frame.save('resolve//%s-%d.png' % (''.join(os.path.basename(filepath).split('.')[:-1]), i), 'PNG')
i += 1
last_frame = new_frame
im.seek(im.tell() + 1)
except EOFError:
pass
def addTextToImage(file,x,y,str):
im = Image.open(file)
draw = ImageDraw.Draw(im)
draw.text((x,y),str,(0,0,0))
draw = ImageDraw.Draw(im)
if os.path.exists('change') == False:
os.mkdir("change")
im.save("change//"+file)
#構建GIF文件
def buildGifImage(buffer,targetfile,speed):
frames = []
for image in buffer:
frames.append(imageio.imread(image))
imageio.mimsave(targetfile, frames, 'GIF', duration= 0.1)
#查找目錄下的所有png文件
def find_all_png(path):
png_filenames = glob.glob(path+"*.png")
buf=[]
for png_file in png_filenames:
buf.append(png_file)
return buf
#添加文字到GIF圖
def addTextToGif(file,x,y,str):
resolveGifImage(file)
if os.path.exists('resolve') == False:
os.mkdir("resolve")
for image in os.listdir("resolve"):
addTextToImage("resolve/"+image,x,y,str)
buildGifImage(find_all_png("change/resolve/"),"1.gif",0.1)
addTextToGif("load.gif",100,100,"Loading")
原圖:修改後:
27.建立一個線程並運行
import _thread
import time
def printCurTime():
threadname = "print"
count = 0
while count < 5:
time.sleep(1)
print("%s: %s" % (threadname, time.ctime(time.time())))
try:
_thread.start_new_thread(printCurTime())
except:
print("Create thread failed.")
while True:
pass
28.傳遞參數給線程並打印日期
#!/usr/bin/python3
import _thread
import time
def printCurTime():
threadname = "print"
count = 0
while count < 5:
time.sleep(1)
print("%s: %s" % (threadname, time.ctime(time.time())))
count = count +1
def printAstring(i):
count = 0
while count < 2:
time.sleep(2)
print("%d" %(i))
try:
_thread.start_new_thread(printCurTime,())
_thread.start_new_thread(printAstring,(1,))
except:
print("Create thread failed.")
while True:
pass
這裏需要注意的是_thread.start_new_thread 函數的參數,第一個是函數的名稱,第二個是參數,如果沒有參數也需要有一組括號
29.使用Tkinter創建一個GUI,有Button和Listbox控件
#!/usr/bin/python3
from tkinter import *
def bt1():
print("Button pressed")
root = Tk()
listb = Listbox(root)
btAction = Button(root,text="Hello button",relief=FLAT,command=bt1()).pack()
listb.pack()
root.mainloop()
30.python建立簡單的服務端
#!/usr/bin/python3
import socket
import wx
ip_port= ('192.168.1.161',9999)
web = socket.socket()
web.bind(ip_port)
web.listen(5)
while True:
print("System running")
conn, addr = web.accept()
data = conn.recv(1024)
print(data)
conn.sendall(str('<h1>Welcome</h1>'))
conn.close()