Author: Amisha

Learning in Neural Networks

What is Learning?

Learning rule in Neural Network means machine learning i.e. how a machine learns. It is a mathematical logic to improve the performance of Artificial Neural Network.

Learning rule is one of the most important factors to decide the accuracy of ANN.

sc_learning

Synapse

Dictionary meaning of synapse is togetherness, conjunction. The purpose of the synapse is to pass the signals from one neuron to target neuron. It is the basis through which neurons interact with each other.

Presynaptic and Postsynaptic Neuron

Information flow is directional. The neuron which fires the chemical called neurotransmitter is presynaptic neuron and the neuron which receives neurotransmitter is postsynaptic neuron.

Learning Rules

sc_learning_1

Hebbian Learning

It is one of the oldest learning algorithms. A synapse(connection) between two neurons is strengthened if the neuron A on either side of the synapse is near enough to excite neuron B, and repeatedly or persistently takes part in firing it. It leads to some growth process or metabolic changes in one or both cells such that A’s efficiency as one of the cells firing B, is increased.

Generalization of Hebbian Rule

\,\Delta w_i = \eta x_i y,

The four properties which characterize Hebbian synapse are:-

Time-dependent mechanism:- In it, modification in the Hebbian Synapse depend on the exact time of the occurrence of the presynaptic and postsynaptic activities.

Local mechanism:- Since synapse holds information-bearing signals. This locally available information is used by Hebbian synapse to produce local synaptic modification that is input specific.

Interactive mechanism:- In it change in Hebbian synapse depends upon the activity levels on both sides of the synapse(i.e. presynaptic and postsynaptic activities).

Conjunctional or correlational mechanism:- The co-occurrence of presynaptic and postsynaptic activities is sufficient to produce synaptic modification. That is why it is referred to as a conjunctional synapse. The synaptic change also depends upon the co-relation between presynaptic and postsynaptic activities due to which it is called correlational synapse.

Competitive Learning

In competitive learning, the output neuron competes among themselves for being fired. Unlike Hebbian Learning, only one neuron can be active at a time. It is the form of unsupervised learning.

It plays an important role in the formation of topographic maps.

The three basic elements to a competitive learning rule:-

  1. A set of neurons that are same except some neurons and which therefore respond differently to the given input set.
  2. A limit imposed on the “strength” of each neuron.
  3. A mechanism that allows a neuron to compete among themselves for a given set of inputs. The winning neuron is called a winner-takes-all-neuron.

The internal activity vof the winning neuron must be the largest among all the neurons for a specified input pattern x. The output signal vof the winning neuron is set equal to one; the output signal of all other neurons that lose the competition is set to zero.

 

The change applied to synaptic weight wji is defined by

{\displaystyle \Delta w_{ij}=\left\{{\begin{matrix}\eta (x_{i}-w_{ij})&{\mbox{ if }}i=j\\0&{\mbox{ otherwise}}\end{matrix}}\right.}

sc_comp

 Boltzmann Learning

Boltzmann learning is statistical in nature. It is derived from the field of thermodynamics. It is similar to an error-correction learning rule. However, in Boltzmann learning, we take a difference between the probability distribution of the system instead of the direct difference between the actual value and desired output.

Boltzmann learning rule is slower than the error-correction learning rule because in it the state of each individual neuron, in addition to the system output is taken into account.

The neurons operate in a binary manner representing +1 for on state and -1 for off state. The machine is characterized by an energy function E

E=-\left(\sum _{{i<j}}w_{{ij}}\,s_{i}\,s_{j}+\sum _{i}\theta _{i}\,s_{i}\right)

where si is the state of neuron and wji is the synaptic weight between neuron i and j. The fact that means that none of the neurons in the machine has self-loopback. 

The probability of flipping the state of neuron j

p_\text{i=on} = \frac{1}{1+\exp(-\frac{\Delta E_i}{T})}

where  \Delta E_i is the energy change.

The neurons of Boltzmann machine is divided into two functional groups, visible and hidden. The visible neurons act as an interface between the network and the environment in which it operates, whereas the hidden neurons always act freely.

sc_boltzmann

The Boltzmann machine works on two modes of operation:

Clamped condition:- In this, the visible neurons are clamped onto the specific states. These states are determined by the environment.

Free-running condition:- In this, all the neurons including the visible neurons and hidden neurons are allowed to operate freely.

Boltzmann Learning uses only locally available observations under two modes of operations: clamped and free running.

Advertisements

Playing with Osmosis

Command to filter the file with tag amenity=school and write the filtered data in second file.

$ osmosis –read-xml file=”ludhiana.osm” –nkv keyValueList=”amenity.school” –write-xml file=”school.osm”

Do you want to update your OSM data without deleting existing data?

So here are the steps given below.

Step 1

Derive a change set between two files. The first file is the file after changing, the second planet file is the file before changing. The changeset will be written in the third file.

$ osmosis –read-xml file=”classroom.osm” –read-xml file=”class_lib_tcc.osm” –derive-change –write-xml-change file=”classroom_classlibtcc_diff.osm”

Step 2

Dump the changeset to the database in append mode. It means it will change only affected data. Rest will exist there.

$ osm2pgsql –slim -a -d classroom -C 2500 –hstore -S openstreetmap-carto.style ~/osmosis_files/class_audi_diff.osm

And you are done.:)

Note: Osmosis and osm2pgsql have different schemas. So for using postgis flags of osmosis we have to create schema compatible with osmosis. I followed this link to create ans setup database.

For my satisfaction, I have written that command again.

$ psql -d classroom -f /home/amisha/osm/osmosis/script/pgsnapshot_schema_0.6_action.sql

OUTPUT

CREATE TABLE
ALTER TABLE

 

Variety: Wallpaper Changer

Variety Software

Variety is an open source wallpaper changer for linux.

Features

  1. It allows to set your own wallpapers.
  2. Provide  an option to change wallpaper automatically on hourly, daily basis.

Installation

sudo add-apt-repository ppa:peterlevi/ppa
sudo apt-get update
sudo apt-get install variety

Open it either from dashboard or from terminal by running command “variety”. Set it according to your needs.

Screenlets: Desktop Widgets

The next thing to make your Ubuntu more beautiful is to display desktop widgets like clock, infoPanelDesktop in Ubuntu system with the help of Screenlets software using this link.

Wireshark: Packet Analyzer

Install Wireshark from this link.

Vim Configuration

Are you bored of using standard vim editor?

Do you really want to style and customise your vim editor? Then what you are waiting for.

I have configured vim using this link . The complete source code and documentation of vimrc file is written in my Github repo

Just follow the instruction given in the README.md file and impress your friends with it.;-)

Struggles:

After adding and installing plugin “YouCompleteMe” for auto-complete I was getting message while opening any file with vim.

“The ycmd server SHUT DOWN (restart with :YcmRestartServer)”

Even after running command :YcmRestartServer the problem stucked. After searcing on internet, I ran the python script “install.py” under “$HOME/.vim/bundle/YouCompleteMe”

The following table contains some of vim basic commands and the commands run for my vimrc file.

Command Description
Type v, yank lines then press Ctrl-c It will copy lines in visual mode. It will work if you copy this .vimrc file.
Tap Esc, then Ctrl -p It will paste lines in normal mode. It will work if you copy this .vimrc file.
:Te filename It will open that file within the vim editor. You can also select file instead of typing filename. For that type :Te and then open NerdTree(Ctrl +n) and select the exact file.
gt Switch between the files opened with :Te command.
Ctrl + ww Switch between the files opened with :Te command.
Ctrl-P It enables the search within the vim. It uses plugin ctrlp.vim.
:sp filename Split the layout vertically. It means the vim window is divided in two parts upper and lower.
:vs filename Split the layout horizontally. It means the vim window is divided in two parts left and right.
:b buffer_number Switch to that particular buffer.
:ls List all buffers. Buffers are the files open in that vim session.
0 To reach the beginning of a line.
$ To reach end of a line.
* Move to the next occurrence of the word under cursor.
# Move to the previous occurrence of the word under cursor.
gg To reach beginning of a file.
G To reach end of a file.
o To insert text into a new line.
dw Deletes the first word on the right side of the cursor.
. To repeat the previous command.
x To delete a character.
d$ Delete from cursor to the end of current line.
5yy Copy 5 lines.
line_no>>G To go to particular line number.
Yank lines,then type :e filename. Copy-paste from one file to other. Filename is the destination file where you want to paste the lines.

 

Bitcoins

What is Bitcoin?

Bitcoin is a new currency that was created in 2009 by an unknown person using the alias Satoshi Nakamoto and released as open-source software. It is a cryptocurrency and worldwide payment system. It is the first decentralized digital currency .

Transactions are made with no middle men – meaning, no banks! The price of bitcoin skyrocketed into the thousands in 2017.

Why Bitcoins?

With the help of bitcoins, international payments are easy and cheap because they are not tied to any country or subject to regulation.

Some people just buy bitcoins as an investment, hoping that they’ll go up in value.

Owning Bitcoins

 Bitcoins are stored in a “digital wallet,” which exists either in the cloud or on a user’s computer. Bitcoins are traded from one personal ‘wallet’ to another ( peer to peer communication).

Anonymity

Though each bitcoin transaction is recorded in a public log, names of buyers and sellers are never revealed – only their wallet IDs. That’s why it has become the currency of choice for people online buying drugs or other illicit activities.

Why bitcoins in demand?

1. It does not rely on a central bank.
2. Due to limited supply, people will pay more to get the coins they think have value.
3. It can be used for investment.

Future in question

No one knows what will become of bitcoin. It is mostly unregulated, but some countries like Japan, China and Australia have begun weighing regulations. Governments are concerned about taxation and their lack of control over the currency.

Daily Dose

After so long, I got a time to publish this draft. They are general things a developer should know.

Command to download the debian file of the package.

sudo apt download <package-name>

Command to see the dependencies of the package.

sudo apt-cache depends <package>

I was not able to install any package with apt.

*** Error in `appstreamcli’: double free or corruption (fasttop): 0x0000000001dedf90 **

Solution

$ sudo apt install –reinstall libappstream3

Let’s talk about Git.

What if you want to copy the file from one branch to other in git. Think think…

Congratulations if you know, but still I will explain here in detail.

Let’s say we have two branches A and B. I am currently in branch A and I want to copy one file from branch B to A. Remember, the file you want to copy should be committed. If not, then first go to branch B and commit it using below commands.

git checkout B

git add <filename>

git commit -m “Dear file, you are in demand!”

Now come back to branch A using

git checkout A

Now, using below command copy the file from branch B to A.

git checkout B <filename>

Apart from that,  I updated my Firefox using link

I think you learned some new things. Good bye. Stay tuned!

Title of Lovely Blog hidden under Description

Baar Baar Din Yah Aaye, Baar Baar Dil Yah Gaaye
Tu Jiye Hazaaron Saal, Yah Meri Arazu Hai
Happy Birthday To You…

I am sure you are also rhyming this song with me. Moreover you are thinking why I have written over here. So, it’s time to reveal the surprise.

It’s my Hundredth Happy Blog Day. 😉

All thanks to OpenStreetMap, Linux  and most import Great Developers Team to be a part of this journey.

Coming to non-technical Stuff, today, I heard news

After Train Departs 20 Seconds Early, Japan Railway Issues ‘Deep Apology’

You might be wondering why I have mentioned especially this news over here.

While reading this news many thoughts came to my mind. Previous year while receiving HVPE lecture my Sir said the main reasons how Japanese has a rapid economic growth.

[His Experience- During the departure of bus, In India people catch it by poking others but in Japan they act like civilized person.]

More precisely, they care for people whether it would be their family, employees, or even a person not belong to them in anyway.

They are dedicated to the work assigned to them.

They have spiritual sense of awareness in their social and economic life.

Overall, The Japanese have a practical outlook and believe in showing results in their work, even if this meant trial and error methods.

Now, it’s to time to have a break. Meet you soon with crispy technical stuff. 🙂

Pip freeze outputs a list of python globally installed packages

Few days back, I got to know the actual meaning of virtualenv from my friend Amrit.

Virtualenv

virtualenv <name>

The above command will create a new directory with <name> which create new python executable path, set up tools like pip, wheel etc through which we can install new python packages even without sudo power and independent of global python packages.

source /<name>/bin/activate

It will activate the virtualenv you have created now. Make sure to activate before you install new package under it.

deactivate                                   //deactivate the virtualenv.

pip freeze                                  //list all the packages installed under that environment.

Before the installation of any package under it, it should output none. But in my it was listing global python packages installed.

On browsing the error, I came to know that there was one file existing named “pip.conf”

[global]
target=/usr/local/lib/python3.4/dist-packages

Either you can remove the file or move it at other place. This seems to be a small problem but in actual it was destroying the real power of having virtualenv. So, solve it ASAP otherwise it gonna create chaos.

PDF Editor

Apart from that, I edited pdf with the online tool https://www.sejda.com/

Seriously it’s too flexible and interest seeking tool because of the features like Add your signature, tick the check box and many more.

 

Publish Post on Page through Facebook API

So, here comes very interesting task. As I mentioned in my previous blog about #LuvLdh Event, this blog is related to that only.

Me and my friend Amrit was given a task to make a web app which will allow user to login through facebook, upload images or document and automatically publish it on page.

This blog will cover very small part of the problem i.e. how user can publish post on a page. We used Facebook SDK for Python.

We followed following links to  solve it.

https://facebook-sdk.readthedocs.io/en/latest/api.html

http://nodotcom.org/python-facebook-tutorial.html

https://stackoverflow.com/questions/24052651/python-facebook-sdk-post-to-page

Installation

Install facebook module of Python as given in https://facebook-sdk.readthedocs.io/en/latest/install.html

Generate Access Token

  1. Login to facebook account.
  2. In new tab, browse to https://developers.facebook.com/
  3. Go to “Tools and Support” and then “Graph API Explorer”.
  4. Click “Get Token” and then “Get User Access Token”. It will prompt out permission options.
  5. In order to publish post on your account, Check box “publish actions” permission and then click “Get Access Token”. It will ask for whom should see the post(preferably public). To know more about permissions browse to https://developers.facebook.com/docs/facebook-login/permissions

Congratulations, you have generated your long string of access token.

import facebook

graph = facebook.GraphAPI(access_token="your_generated_token", version=2.10)

 

The above command will create new object “graph” with your own access token.

graph.put_photo(image=open('img.jpg', 'rb'),
                message='Look at this cool photo!')

This will publish photo on your account. Likewise to publish text or anything follow given links.

Publish Post as a Normal User into a Page.

Now recreate Token with more permissions. This time check box

Scopes user_location, user_likes, user_events, user_photos, user_about_me, user_posts, email, publish_actions, manage_pages, pages_show_list, publish_pages, public_profile

 

Here “public_profile” means to view your post to public. This permission is must. This is obtain when we click “get access token” it ask for to show the post to [public, friends,  only me]. Select Public. It took complete one day to debug the problem.:P

Now check the Page_id of the page in which you want to publish. It is displayed in URL or you also see in the “About” Section of the page.

Create the new object just like “graph” object created with new access token.

graph.put_wall_post(message=’Really Worked!!’, profile_id=’your_page_id’)

Likewise, an admin of the page can also publish the post. Rather an admin can select any option among [public, friends,  only me].

Make sure in the General settings of the page there is no bar for a normal user and everything is set to public(if applicable).

Now check post to the page Community section. You will be able to see the post.:)

For any kind of doubt feel free to comment.

Integral

This blog is an integration of small small tasks done few days back.

Steps to install Google chrome in Ubuntu.

sudo apt-get install libxss1 libappindicator1 libindicator7
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb

Gh-Pages

Following this link I tried to make Github Pages

https://pages.github.com/

LuvLdh Website

Then TCC Team created website for the event #LuvLdh located at https://amisha2016.github.io/LuvLdh/

Source code

You can clone the source code from https://github.com/amisha2016/LuvLdh

The actual theme was picked from http://markups.io/demo/eventoz/