使用tensorflow實現gan簡單小demo
import tensorflow as tf import matplotlib.pyplot as plt import numpy as np tf.set_random_seed(1) np.random.seed(1) BATCH_SIZE = 64 LR_G = 0.0001 LR_D = 0.0001 N_IDEAS = 5 ART_COMPONENTS = 15 PAINT_POINTS = np.vstack([np.linspace(-1,1,ART_COMPONENTS)for _ in range(BATCH_SIZE)]) #shape = (64,15) print(PAINT_POINTS) plt.plot(PAINT_POINTS[0],2*np.power(PAINT_POINTS[0],2)+1,c = '#74BCFF',lw = 3,label='upper bound') plt.plot(PAINT_POINTS[0],1*np.power(PAINT_POINTS[0],2)+0,c = '#FF9359',lw = 3,label='lower bound') plt.legend(loc = 'upper right') plt.show() def artist_works(): #即真實的資料 a = np.random.uniform(1,2,size=BATCH_SIZE)[:,np.newaxis] #shape = (64,1) paintings = a*np.power(PAINT_POINTS,2)+(a-1) #shape = (64,15) return paintings with tf.variable_scope('Generator'): #使用生成器偽造假的資料 G_in = tf.placeholder(tf.float32,[None,N_IDEAS]) #shape = (64,5) G_l1 = tf.layers.dense(G_in,128,tf.nn.relu) G_out = tf.layers.dense(G_l1,ART_COMPONENTS) with tf.variable_scope('Discriminator'): real_art = tf.placeholder(tf.float32,[None,ART_COMPONENTS],name='real_in') #使用鑑別器來鑑別真實資料 D_l0 = tf.layers.dense(real_art,128,tf.nn.relu,name='1') #並將它判別為1 prob_artist0 = tf.layers.dense(D_l0,1,tf.nn.sigmoid,name='out') #fake art D_l1 = tf.layers.dense(G_out,128,tf.nn.relu,name='1',reuse=True) #使用費鑑別器來判別偽造資料 prob_artist1 = tf.layers.dense(D_l1,1,tf.nn.sigmoid,name='out',reuse=True) #並將其判別為0 D_loss = -tf.reduce_mean(tf.log(prob_artist0)+tf.log(1-prob_artist1)) #定義誤差函式 G_loss = tf.reduce_mean(tf.log(1-prob_artist1)) train_D = tf.train.AdamOptimizer(LR_D).minimize( #定義優化函式 D_loss,var_list=tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,scope='Discriminator')) train_G = tf.train.AdamOptimizer(LR_G).minimize( G_loss,var_list=tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,scope='Generator')) sess= tf.Session() #初始化流圖 sess.run(tf.global_variables_initializer()) plt.ion() for step in range(5000): artist_paintings = artist_works() G_ideas = np.random.randn(BATCH_SIZE,N_IDEAS) G_paintings,pa0,D1 = sess.run([G_out,prob_artist0,D_loss,train_D,train_G], {G_in:G_ideas,real_art:artist_paintings})[:3] if step%50==0: #視覺化 plt.cla() plt.plot(PAINT_POINTS[0],G_paintings[0],c='#4AD631',lw=3,label='Generated painting') plt.plot(PAINT_POINTS[0],2*np.power(PAINT_POINTS[0],2)+1,c='#74BCFF',lw=3,label='upper bound') plt.plot(PAINT_POINTS[0],1*np.power(PAINT_POINTS[0],2)+0,c='#FF9359',lw=3,label='lower bound') plt.text(-.5,2.3,'D accuracy=%.2f (0.5 for D to converge)'%pa0.mean(),fontdict={'size':15}) plt.text(-.5,2,'D score=%.2f (-1.38 for G to converge)'%-D1,fontdict={'size':15}) plt.ylim((0,3));plt.legend(loc='upper right',fontsize=12);plt.draw();plt.pause(0.01) plt.ioff() plt.show()
本程式使用生成對抗網路(GAN)來實現一個小Demo:
目的 :使用生成器擬合形如:a*X2+(a-1)
對於a 我們使用np.random.uniform函式隨機生成(1-2之間)
為了直觀的看到生成器生成的資料,我們設定了上下兩個邊界。
最終實驗效果:
註釋:此文為莫凡Python學習筆記 莫凡tensorflow
相關推薦
使用tensorflow實現gan簡單小demo
import tensorflow as tf import matplotlib.pyplot as plt import numpy as np tf.set_random_seed(1) np.random.seed(1) BATCH_SIZE = 64 LR_G
TensorFlow的一個簡單輸出Demo
TensorFlow程式 簡單輸出程式 """ TensorFlow程式 簡單輸出程式 """ from __future__ import print_function # 匯入tensorflow的包 import tensorflow as tf # try
Spring boot 簡單小demo
1.開啟idea,建立新專案:Spring Initializr 2. Group和Artifact可用預設的。建議Packaging選Jar。 點選next 3.Spring boot 選1.5.版本 Web選Web選項 點選next->finash
JAVA實現截圖小Demo
閒的沒事,寫個從書上看到的一個小例子,java獲取電腦螢幕內容,類似於qq截圖吧。直接上程式碼,都有註釋比較簡單。 public class ScreenPhoto { public static void main(String[] args) throws AWTException, IO
Tensorflow實現最簡單的神經網路
程式程式碼: #匯入相應模組 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #讀入資料 mnist = input_data.read_data_sets('MNI
用mpvue實現一個簡單的demo
序言 上一篇從騰訊後臺搭建以及搭建本地開發環境這兩個方面進行總結。在進行編碼時,這兩種搭建方式也能提供更好的開發環境,提高實際的開發效率。 這一節主要分享的便是如果用mpvue實現一個基礎的demo,這個demo主要會從mpvue的特性、結構,以及生命週期來實現,期間遇到
jquery中H5頁面長按事件(程式碼全)簡單小demo
一個簡單的demo,先上圖看效果(當長按0.5秒的時候就會顯示下面的紅色div) 如果是單擊一次滑鼠並沒有到0.5秒則提示 下面上全部程式碼 注意:是H5頁面才會觸發,用谷歌除錯的時候要按F12進入手機的模式,否則不起作用(@炬) <!DOCTYPE h
Keras基於TensorFlow實現的簡單分類問題
神經網路是可以用來模擬分類問題。 首先先說一下什麼是分類問題,分類問題是用於將事物打上一個標籤,通常結果為離散值。例如判斷一個學生是好學生還是壞學生,其結果是離散的,即好學生、壞學生。而回歸問題是給出一個值去逼近正確值。但是分類通常是建立在迴歸之上,例如上面的
golang 實現檔案傳輸小demo
獲取檔案資訊需要用到os. Stat介面,傳送檔案前開啟接收者(服務端),啟動客戶端先發送檔名給接收者,接收者收到檔名返回確認資訊"ok",才讀取本地檔案 傳送給接收者。 傳送者: package main import ( "fmt" "io
mxnet(gluon) 實現DQN簡單小例子
參考文獻關於增強學習的基本知識可以參考第二個連結,講的挺有意思的。DQN的東西可以看第一個連結相關視訊。課程中實現了Tensorflow和pytorch的示例程式碼。本文主要是改寫成了gluon實現Q-learning的演算法流程DQN的演算法流程對於DQN的理解:增強學習中需要學習的東西是Q-table,決
Unity5+Vuforia實現一個AR小Demo (1)
前言 上學期擔任了導師一門選修課的TA,課程是關於VR和AR的,所以就設計了一個簡單的AR小Demo實驗,其實都是網路上用Unity+Vuforia做的AR效果,這裡只是整理歸納一下步驟而已,分為兩部分,第一部分是顯示模型,第二部分是對模型進行簡單操作。由於這
python+django+javascript+layer 簡單小demo檔案上傳
在經過上面的簡單的小部落格講解後,今天就把前端和後端的程式碼粗略的弄一下。大致的程式碼如下: {# 上傳檔案的時候必須要在form標籤中新增屬性 enctype="multipart/form-data" #} <form method="POST" enct
利用屬性動畫Animator實現的一個小demo,
這個demo只用到了 AnimatorSet和ObjectAnimator:ObjectAnimator的作用是:對某一個屬性進行精確的控制.AnimatorSet的作用是對ObjectAnimator設定的屬性進行綜合控制,如同時進行,或者精確的控制誰先進行誰後進行等這裡
使用tensorflow實現最簡單的線性回歸算法
== ria oca 定義 rcp 顯示 使用 graph unicode 1 #線性回歸:用線性模型y=Wx+b擬合sin 2 import numpy as np 3 import matplotlib.pypl
Nginx+Tomcat實現負載均衡小demo
一、搭建Tomcat服務 下載安裝JDK和Tomcat就不說了,太簡單了。由於是win7單機環境測試,啟動多個Tomcat服務可以通過在server.xml配置檔案中修改埠實現。準備兩個Tomcat,比如使用兩個不同版本的Tomcat(相同版本可以更改下檔名
jq實現的tab小demo
一:體會 雖然只是一個很小的demo,但途中卻遇到很多問題,問題都很小但是卻很難發現,解決過程很是惱火,偶爾靈光一閃卻又想了起來,而且混淆了很多jq和原生js中的方法,分不清楚哪個是jq中的,哪個是
hammer.js---拖動滑塊實現驗證的小demo
1.先看一下效果圖 移動端實現,簡單方便,只要稍作修改比如用Math.random()函式生成一個隨機的位置,然後判斷位置差即可。 快去試一試這個很fashion的庫吧。 2.看一下HTML結構
tensorflow實現簡單神經網路層逼近一個二次函式的demo
構造一個滿足一元二次函式y=a*x^2 + b的網路,生成一批原始資料,然後搭建簡單的神經網路,僅僅包含著一個輸入層、一個隱藏層和一個輸出層。通過TensorFlow吧隱藏層和輸出層的權重w和偏置
聊聊UDP、TCP和實現一個簡單的JAVA UDP小Demo
最近真的比較忙,很久就想寫了,可是一直苦於寫點什麼,今天腦袋靈光一閃,覺得自己再UDP方面還有些不瞭解的地方,所以要給自己掃盲。 好了,咱們進入今天的主題,先列一下提綱: 1. UDP是什麼,UDP適用於什麼場景? 2. 寫一個小Demo來加深一下UDP的理解。 3. UDP和TCP的區別
每天一個JS 小demo之通過事件委托實現菜單展開及選中特效。主要知識點:事件
實現 tween efi blog dem int position 16px eas <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><titl