5.6 Deep Neural Network
5.6 Deep Neural Network
5.6.1 Dropout
5.6.1 Dropout
In[]:=
session=StartExternalSession["Python"]
Out[]=
ExternalSessionObject
Test
In[]:=
5+6
Out[]=
11
In[]:=
drop=DropoutLayer[0.65,"Input"NetEncoder["Image"],"Output"NetDecoder["Image"]]
Out[]=
DropoutLayer
In[]:=
drop
,NetEvaluationMode"Train"
Out[]=
5.6.2 ReLU
5.6.2 ReLU
In[]:=
Clear[x]
In[]:=
Plot[Ramp[x],{x,-2,2}]
Out[]=
In[]:=
Simplify[Ramp[x]-xUnitStep[x]]
Out[]=
0
5.6.3 Softmax Layer
5.6.3 Softmax Layer
In[]:=
softmax=SoftmaxLayer["Input"{3}]
Out[]=
SoftmaxLayer
In[]:=
softmax[{2,1,0.1}]
Out[]=
{0.659001,0.242433,0.0985659}
5.6.4 Cross Entropy Loss
5.6.4 Cross Entropy Loss
In[]:=
Plot[{-Log[y],-Log[1-y]},{y,0,1},FrameTrue,FrameLabel{"y"},PlotLegends{"d = 1 -Log(y)","d = 0 -Log(1-y)"}]
Out[]=
In[]:=
loss=CrossEntropyLossLayer["Probabilities"]
Out[]=
CrossEntropyLossLayer
In[]:=
loss[<|"Input"->{0.2,0.7},"Target"->{0.3,0.8}|>]
Out[]=
0.768171
In[]:=
loss=MeanSquaredLossLayer["Input"->{2}]
Out[]=
MeanSquaredLossLayer
In[]:=
loss[<|"Input"->{0.2,0.7},"Target"->{0.3,0.8}|>]
Out[]=
0.01
5.6.9 Classifying Double Spirals
5.6.9 Classifying Double Spirals
In[]:=
spirals=Import["M:\\spiral.dat"];
In[]:=
n=Length[spirals]
Out[]=
194
In[]:=
s1={};s2={};
In[]:=
Do[If[spirals[[i,3]]0,AppendTo[s1,{spirals[[i,1]],spirals[[i,2]]}],AppendTo[s2,{spirals[[i,1]],spirals[[i,2]]}]],{i,1,n}]
In[]:=
S1=ListPlot[s1,PlotStyle{RGBColor[1,0,0],PointSize[0.02]},AspectRatio1];
In[]:=
S2=ListPlot[s2,PlotStyle{RGBColor[0,0,1],PointSize[0.015]},AspectRatio1];
In[]:=
pspiral=Show[{S1,S2},PlotRangeAll]
Out[]=
In[]:=
S1=Map[#{0}&,s1];S2=Map[#{1}&,s2];
In[]:=
trainingdata=Join[S1,S2];
In[]:=
net=NetChain[{16,Ramp,16,Ramp,16,Ramp,16,ElementwiseLayer[1+Tanh[#]&],1},"Input"{2},"Output"{1}]
In[]:=
import numpy as np
import pandas as pd
np.random.seed(4375689)
import pandas as pd
np.random.seed(4375689)
In[]:=
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import RMSprop
from keras.layers import Dense
from keras.optimizers import RMSprop
In[]:=
train_data = pd.read_csv('M:\\spiralom.csv').values
train_X = train_data[:,0:2]
train_y = train_data[:,2]
train_X = train_data[:,0:2]
train_y = train_data[:,2]
In[]:=
model = Sequential()
model.add(Dense(16, activation='relu', input_shape=(2,)))
model.add(Dense(16, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.add(Dense(16, activation='relu', input_shape=(2,)))
model.add(Dense(16, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
In[]:=
model.compile(loss='binary_crossentropy', optimizer=RMSprop(),
metrics=['accuracy'])
metrics=['accuracy'])
In[]:=
history = model.fit(train_X, train_y, batch_size=32, epochs=2000, verbose=0)
In[]:=
score = model.evaluate(train_X, train_y, verbose=0)
In[]:=
score
In[]:=
u=model.predict(train_X)
u
u=model.predict(train_X)
u